diff options
| author | Dustin Oprea <myselfasunder@gmail.com> | 2014-01-09 00:25:03 -0500 |
|---|---|---|
| committer | Dustin Oprea <myselfasunder@gmail.com> | 2014-01-09 11:41:30 -0500 |
| commit | 3ccdfce2e5e7e85b5e5628788f440570f9306242 (patch) | |
| tree | 01f8e17cc5ebc26285f401eefb6c8a5096c31dd8 | |
| parent | 0f40d8149a594a054e73f403a293a422d85b8e1e (diff) | |
| download | python-requests-3ccdfce2e5e7e85b5e5628788f440570f9306242.tar.gz | |
Added an SSL TA example.
| -rw-r--r-- | docs/user/advanced.rst | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst index 3ff66d52..0b4b1634 100644 --- a/docs/user/advanced.rst +++ b/docs/user/advanced.rst @@ -604,8 +604,40 @@ The mount call registers a specific instance of a Transport Adapter to a prefix. Once mounted, any HTTP request made using that session whose URL starts with the given prefix will use the given Transport Adapter. -Implementing a Transport Adapter is beyond the scope of this documentation, but -a good start would be to subclass the ``requests.adapters.BaseAdapter`` class. +Many of the details of implementing a Transport Adapter are beyond the scope of +this documentation, but take a look at the next example for a simple SSL use- +case. For more than that, you might look at subclassing +``requests.adapters.BaseAdapter``. + +Example: Specific SSL Version +----------------------------- + +The Requests team has made a specific choice to use whatever SSL version is +default in the underlying library (`urllib3`_). Normally this is fine, but from +time to time, you might find yourself needing to connect to a service-endpoint +that uses a version that isn't compatible with the default. + +You can use Transport Adapters for this by taking most of the existing +implementation of HTTPAdapter, and adding a parameter *ssl_version* that gets +passed-through to `urllib3`. We'll make a TA that instructs the library to use +SSLv3: + +:: + + import ssl + + from requests.adapters import HTTPAdapter + from requests.packages.urllib3.poolmanager import PoolManager + + + class Ssl3HttpAdapter(HTTPAdapter): + """"Transport adapter" that allows us to use SSLv3.""" + + def init_poolmanager(self, connections, maxsize, block=False): + self.poolmanager = PoolManager(num_pools=connections, + maxsize=maxsize, + block=block, + ssl_version=ssl.PROTOCOL_SSLv3) .. _`described here`: http://kennethreitz.org/exposures/the-future-of-python-http .. _`urllib3`: https://github.com/shazow/urllib3 |
