pumazi/wsgi_intercept2 — Issue #23: 23 - Add "requests" support 
Author: pumazi
Created: 2011-12-22 19:44:42+00:00
State: open

Requests uses a bundled urllib3, here's what I had to do to make wsgi_intercept work with it:

I propose that we add this in a requests_intercept module (with cleaned up imports ;) )

def install_opener():
# httplib patch
from wsgi_intercept.httplib_intercept import install
install()

# requests' patch
import wsgi_intercept
from requests.packages.urllib3 import connectionpool

connectionpool.old_http = connectionpool.HTTPConnection
connectionpool.HTTPConnection = wsgi_intercept.WSGI_HTTPConnection

connectionpool.old_https = connectionpool.HTTPSConnection
connectionpool.HTTPSConnection = wsgi_intercept.WSGI_HTTPSConnection

# we need settimeout()
wsgi_intercept.wsgi_fake_socket.settimeout = lambda self, timeout: None

def uninstall_opener():
# httplib unpatch
from wsgi_intercept.httplib_intercept import uninstall
uninstall()

# requests' unpatch
import wsgi_intercept
from requests.packages.urllib3 import connectionpool

connectionpool.HTTPConnection = connectionpool.old_http
connectionpool.HTTPSConnection = connectionpool.old_https

Original link: http://code.google.com/p/wsgi-intercept/issues/detail?id=23