.. _python_swift:

=====================
Python Swift Examples
=====================

Create a Connection
===================

This creates a connection so that you can interact with the server:

.. code-block:: python

	import swiftclient
	user = 'account_name:username'
	key = 'your_api_key'

	conn = swiftclient.Connection(
		user=user,
		key=key,
		authurl='https://objects.dreamhost.com/auth',
	)


Create a Container
==================

This creates a new container called ``my-new-container``:

.. code-block:: python

	container_name = 'my-new-container'
	conn.put_container(container_name)


Create an Object
================

This creates a file ``hello.txt`` from the file named ``my_hello.txt``:

.. code-block:: python

	with open('hello.txt', 'r') as hello_file:
		conn.put_object(container_name, 'hello.txt',
						contents= hello_file.read(),
						content_type='text/plain')


List Owned Containers
=====================

This gets a list of containers that you own, and prints out the container name:

.. code-block:: python

	for container in conn.get_account()[1]:
		print container['name']

The output will look something like this::

   mahbuckat1
   mahbuckat2
   mahbuckat3

List a Container's Content
==========================

This gets a list of objects in the container, and prints out each
object's name, the file size, and last modified date:

.. code-block:: python

	for data in conn.get_container(container_name)[1]:
		print '{0}\t{1}\t{2}'.format(data['name'], data['bytes'], data['last_modified'])

The output will look something like this::

   myphoto1.jpg	251262	2011-08-08T21:35:48.000Z
   myphoto2.jpg	262518	2011-08-08T21:38:01.000Z


Retrieve an Object
==================

This downloads the object ``hello.txt`` and saves it in
``./my_hello.txt``:

.. code-block:: python

	obj_tuple = conn.get_object(container_name, 'hello.txt')
	with open('my_hello.txt', 'w') as my_hello:
		my_hello.write(obj_tuple[1])


Delete an Object
================

This deletes the object ``hello.txt``:

.. code-block:: python

	conn.delete_object(container_name, 'hello.txt')

Delete a Container
==================

.. note::

   The container must be empty! Otherwise the request won't work!

.. code-block:: python

	conn.delete_container(container_name)

