Using an HTTP proxy
===================

.. note::

    Support for HTTP proxies is only available in Libcloud trunk and higher.

Libcloud supports using an HTTP proxy for outgoing HTTP and HTTPS requests.

Proxy support has been tested with the following Python versions;

* Python 2.6
* Python 2.7 / PyPy
* Python 3.1
* Python 3.2
* Python 3.3
* Python 3.4

You can specify which HTTP proxy to use using one of the approaches described
below:

* By setting ``http_proxy`` environment variable (this setting is system /
  process wide)
* By passing ``http_proxy`` argument to the
  :class:`libcloud.common.base.LibcloudConnection` class constructor (this
  setting is local to the connection instance)
* By calling :meth:`libcloud.common.base.LibcloudConnection.set_http_proxy`
  method (this setting is local to the connection instance)

Known limitations
-----------------

* Only HTTP basic access authentication proxy authorization method is supported

Examples
--------

This section includes some code examples which show how to use an HTTP proxy
with Libcloud.

1. Using ``http_proxy`` environment variable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

By setting ``http_proxy`` environment variable you can specify which proxy to
use for all of the outgoing requests for a duration / life-time of the process
or a script.

Without authentication:

.. sourcecode:: none

    http_proxy=http://<proxy hostname>:<proxy port> python my_script.py

With basic auth authentication:

.. sourcecode:: none

    http_proxy=http://<username>:<password>@<proxy hostname>:<proxy port> python my_script.py

2. Passing ``http_proxy`` argument to the connection class constructor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

By passing ``http_proxy`` argument to the
:class:`libcloud.common.base.Connection` class constructor, you can specify
which proxy to use for a particular connection.

.. literalinclude:: /examples/http_proxy/constructor_argument.py
   :language: python

3. Calling ``set_http_proxy`` method
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Calling ``set_http_proxy`` method allows you to specify which proxy to use
for all the outgoing requests which follow ``set_http_proxy`` method call.

This method also allows you to use a different proxy for each request as shown
in the example below.

.. literalinclude:: /examples/http_proxy/set_http_proxy_method.py
   :language: python
