mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
This refactoring includes some PEP-8 compliance changes, as well as some more complete testing to ensure that we're in fact serving everything out of cassettes when we thing we are. Incidentally, it also includes fixes for #3 and #4
76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
'''Utilities for patching in cassettes'''
|
|
|
|
import httplib
|
|
from .stubs import VCRHTTPConnection, VCRHTTPSConnection
|
|
|
|
|
|
# Save some of the original types for the purposes of unpatching
|
|
_HTTPConnection = httplib.HTTPConnection
|
|
_HTTPSConnection = httplib.HTTPSConnection
|
|
|
|
try:
|
|
# Try to save the original types for requests
|
|
import requests.packages.urllib3.connectionpool as cpool
|
|
_VerifiedHTTPSConnection = cpool.VerifiedHTTPSConnection
|
|
_HTTPConnection = cpool.HTTPConnection
|
|
except ImportError: # pragma: no cover
|
|
pass
|
|
|
|
try:
|
|
# Try to save the original types for urllib3
|
|
import urllib3
|
|
_VerifiedHTTPSConnection = urllib3.connectionpool.VerifiedHTTPSConnection
|
|
except ImportError: # pragma: no cover
|
|
pass
|
|
|
|
|
|
def install(cassette):
|
|
'''Install a cassette in lieu of actuall fetching'''
|
|
httplib.HTTPConnection = httplib.HTTP._connection_class = VCRHTTPConnection
|
|
httplib.HTTPSConnection = httplib.HTTPS._connection_class = (
|
|
VCRHTTPSConnection)
|
|
httplib.HTTPConnection.cassette = cassette
|
|
httplib.HTTPSConnection.cassette = cassette
|
|
|
|
# patch requests
|
|
try:
|
|
import requests.packages.urllib3.connectionpool as cpool
|
|
from .stubs.requests_stubs import VCRVerifiedHTTPSConnection
|
|
cpool.VerifiedHTTPSConnection = VCRVerifiedHTTPSConnection
|
|
cpool.VerifiedHTTPSConnection.cassette = cassette
|
|
cpool.HTTPConnection = VCRHTTPConnection
|
|
cpool.HTTPConnection.cassette = cassette
|
|
except ImportError: # pragma: no cover
|
|
pass
|
|
|
|
# patch urllib3
|
|
try:
|
|
import urllib3.connectionpool as cpool
|
|
from .stubs.urllib3_stubs import VCRVerifiedHTTPSConnection
|
|
cpool.VerifiedHTTPSConnection = VCRVerifiedHTTPSConnection
|
|
cpool.VerifiedHTTPSConnection.cassette = cassette
|
|
cpool.HTTPConnection = VCRHTTPConnection
|
|
cpool.HTTPConnection.cassette = cassette
|
|
except ImportError: # pragma: no cover
|
|
pass
|
|
|
|
|
|
def reset():
|
|
'''Unto all the patching'''
|
|
httplib.HTTPConnection = httplib.HTTP._connection_class = _HTTPConnection
|
|
httplib.HTTPSConnection = httplib.HTTPS._connection_class = \
|
|
_HTTPSConnection
|
|
try:
|
|
import requests.packages.urllib3.connectionpool as cpool
|
|
cpool.VerifiedHTTPSConnection = _VerifiedHTTPSConnection
|
|
cpool.HTTPConnection = _HTTPConnection
|
|
except ImportError: # pragma: no cover
|
|
pass
|
|
|
|
try:
|
|
import urllib3.connectionpool as cpool
|
|
cpool.VerifiedHTTPSConnection = _VerifiedHTTPSConnection
|
|
cpool.HTTPConnection = _HTTPConnection
|
|
except ImportError: # pragma: no cover
|
|
pass
|