mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-08 16:53:23 +00:00
72 lines
2.4 KiB
Python
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()
|