diff --git a/vcr/patch.py b/vcr/patch.py index 2194df6..f5b82cb 100644 --- a/vcr/patch.py +++ b/vcr/patch.py @@ -12,12 +12,20 @@ try: 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 @@ -26,6 +34,17 @@ def install(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 @@ -37,6 +56,13 @@ def reset(): except ImportError: pass + try: + import urllib3.connectionpool + urllib3.connectionpool.VerifiedHTTPSConnection = _VerifiedHTTPSConnection + urllib3.connectionpool.HTTPConnection = _HTTPConnection + except ImportError: + pass + @contextmanager def use_cassette(cassette_path): diff --git a/vcr/urllib3_stubs.py b/vcr/urllib3_stubs.py new file mode 100644 index 0000000..0a8f5a8 --- /dev/null +++ b/vcr/urllib3_stubs.py @@ -0,0 +1,7 @@ +from urllib3.connectionpool import VerifiedHTTPSConnection +from .stubs import VCRHTTPSConnection + +class VCRVerifiedHTTPSConnection(VCRHTTPSConnection, VerifiedHTTPSConnection): + + _baseclass = VerifiedHTTPSConnection +