Source code for wsgiproxy.urllib3_client
# -*- coding: utf-8 -*-
import urllib3
[docs]class HttpClient(object):
"""A HTTP client using urllib3"""
default_options = dict(redirect=False)
def __init__(self, pool=None, **urlopen_options):
self.pool = pool or urllib3.PoolManager(10)
options = self.default_options.copy()
options.update(urlopen_options)
self.options = options
def __call__(self, uri, method, body, headers):
if 'Transfer-Encoding' in headers:
del headers['Transfer-Encoding']
if headers.get('Content-Length'):
body = body.read(int(headers['Content-Length']))
elif body is not None:
body = body.read()
kwargs = self.options.copy()
kwargs.update(body=body, headers=headers)
response = self.pool.urlopen(method, uri, **kwargs)
status = '%s %s' % (response.status, response.reason)
headers = [(k.title(), v) for k, v in response.getheaders().items()]
return (status, response.getheader('location', None),
headers, [response.data])