1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-08 16:53:23 +00:00
Files
vcrpy/vcr/patch.py
2012-10-11 15:47:01 -10:00

72 lines
2.4 KiB
Python

import httplib
from contextlib import contextmanager
from .stubs import VCRHTTPConnection, VCRHTTPSConnection
_HTTPConnection = httplib.HTTPConnection
_HTTPSConnection = httplib.HTTPSConnection
try:
import requests.packages.urllib3.connectionpool
_VerifiedHTTPSConnection = requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection
except ImportError:
pass
try:
import urllib3
_VerifiedHTTPSConnection = urllib3.connectionpool.VerifiedHTTPSConnection
except ImportError:
pass
def install(cassette_path):
httplib.HTTPConnection = httplib.HTTP._connection_class = VCRHTTPConnection
httplib.HTTPSConnection = httplib.HTTPS._connection_class = VCRHTTPSConnection
httplib.HTTPConnection._vcr_cassette_path = cassette_path
httplib.HTTPSConnection._vcr_cassette_path = cassette_path
#patch requests
try:
import requests.packages.urllib3.connectionpool
from .requests_stubs import VCRVerifiedHTTPSConnection
requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection = VCRVerifiedHTTPSConnection
requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection._vcr_cassette_path = cassette_path
except ImportError:
pass
#patch urllib3
try:
import urllib3.connectionpool
from .urllib3_stubs import VCRVerifiedHTTPSConnection
urllib3.connectionpool.VerifiedHTTPSConnection = VCRVerifiedHTTPSConnection
urllib3.connectionpool.VerifiedHTTPSConnection._vcr_cassette_path = cassette_path
urllib3.connectionpool.HTTPConnection = VCRHTTPConnection
urllib3.connectionpool.HTTPConnection._vcr_cassette_path = cassette_path
except ImportError:
pass
def reset():
httplib.HTTPConnection = httplib.HTTP._connection_class = _HTTPConnection
httplib.HTTPSConnection = httplib.HTTPS._connection_class = \
_HTTPSConnection
try:
import requests.packages.urllib3.connectionpool
requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection = _VerifiedHTTPSConnection
except ImportError:
pass
try:
import urllib3.connectionpool
urllib3.connectionpool.VerifiedHTTPSConnection = _VerifiedHTTPSConnection
urllib3.connectionpool.HTTPConnection = _HTTPConnection
except ImportError:
pass
@contextmanager
def use_cassette(cassette_path):
install(cassette_path)
yield
reset()