This repo was archived on November 8, 2022.
httplib2shim is a wrapper over
httplib2 that uses
urllib3 to perform HTTP requests. This library is intended to help existing legacy libraries (and their users) to migrate away from
httplib2. It is not intended to be a general purpose replacement for
httplib2. It does not support every feature and edge case for
httplib2, although contributions are welcome in order to help us cover these cases.
httplib2shim passes the test suite for
httplib2. A few non-applicable tests were disabled, and it's very possible that the tests do not account for behavior that is depended on by clients.
It's recommended to install
urllib3[secure] before installing
pip install urllib3[secure] httplib2shim
Usage is straightforward. You can substitute
httplib2.Http is used. E.g. for the oauth2client use:
import httplib2shim from oauth2client.client import GoogleCredentials credentials = GoogleCredentials.get_application_default() http = httplib2shim.Http() credentials.authorize(http) # http is now authorized with OAuth2 credentials and uses urllib3 under # the covers.
and for the google-auth use:
import httplib2shim import google.auth import google_auth_httplib2 credentials, _ = google.auth.default() http = httplib2shim.Http() http = google_auth_httplib2.AuthorizedHttp(credentials, http=http)
Alternatively, if you do not control the construction of the
Http object, you can use
httplib2shim.patch() to monkey-patch the
httplib2.Http class to point to
import httplib2shim httplib2shim.patch() from googleapiclient.discovery import build from oauth2client.client import GoogleCredentials credentials = GoogleCredentials.get_application_default() # build constructs its own httplib2.Http instance. service = build('compute', 'v1', credentials=credentials) # service.http is now a httplib2shim.Http object.
- Arguments to the Http constructor will be accepted, but may not make a difference. For instance,
ca_certswill have no effect. Instead, pass a
http = httplib2shim.Http(pool=my_pool).
- Http.add_certificate is a no-op and will warn.
- Probably others, pull requests are welcome to complete the functionality.
- See CONTRIBUTING.md
- MIT - See LICENSE