Interceptor¶
Context manager based WSGI interception.
-
class
wsgi_intercept.interceptor.
HttpClientInterceptor
(app, host=None, port=80, prefix=None, url=None)¶ Interceptor for httplib and http.client.
-
class
wsgi_intercept.interceptor.
Httplib2Interceptor
(app, host=None, port=80, prefix=None, url=None)¶ Interceptor for httplib2.
-
class
wsgi_intercept.interceptor.
Interceptor
(app, host=None, port=80, prefix=None, url=None)¶ A convenience class over the guts of wsgi_intercept.
An Interceptor subclass provides a clean entry point to the wsgi_intercept functionality in two ways: by encapsulating the interception addition and removal in methods and by providing a context manager that automates the process of addition and removal.
Each Interceptor subclass is associated with a specific http library.
Each class may be passed a url or a host and a port. If no args are passed a hostname will be automatically generated and the resulting url will be returned by the context manager.
-
class
wsgi_intercept.interceptor.
RequestsInterceptor
(app, host=None, port=80, prefix=None, url=None)¶ Interceptor for requests.
-
class
wsgi_intercept.interceptor.
Urllib3Interceptor
(app, host=None, port=80, prefix=None, url=None)¶ Interceptor for requests.
-
class
wsgi_intercept.interceptor.
UrllibInterceptor
(app, host=None, port=80, prefix=None, url=None)¶ Interceptor for urllib2 and urllib.request.
Example using httplib2, others are much the same:
import httplib2
from wsgi_intercept.interceptor import Httplib2Interceptor
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Whee']
def make_app():
return app
http = httplib2.Http()
with Httplib2Interceptor(make_app, host='localhost', port=80) as url:
resp, content = http.request(url)
assert content == b'Whee'