45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
"""Stubs for boto3"""
|
|
import six
|
|
|
|
try:
|
|
# boto using awsrequest
|
|
from botocore.awsrequest import AWSHTTPConnection as HTTPConnection
|
|
from botocore.awsrequest import AWSHTTPSConnection as VerifiedHTTPSConnection
|
|
|
|
except ImportError: # pragma: nocover
|
|
# boto using vendored requests
|
|
# urllib3 defines its own HTTPConnection classes, which boto3 goes ahead and assumes
|
|
# you're using. It includes some polyfills for newer features missing in older pythons.
|
|
try:
|
|
from urllib3.connectionpool import HTTPConnection, VerifiedHTTPSConnection
|
|
except ImportError: # pragma: nocover
|
|
from requests.packages.urllib3.connectionpool import HTTPConnection, VerifiedHTTPSConnection
|
|
|
|
from ..stubs import VCRHTTPConnection, VCRHTTPSConnection
|
|
|
|
|
|
class VCRRequestsHTTPConnection(VCRHTTPConnection, HTTPConnection):
|
|
_baseclass = HTTPConnection
|
|
|
|
|
|
class VCRRequestsHTTPSConnection(VCRHTTPSConnection, VerifiedHTTPSConnection):
|
|
_baseclass = VerifiedHTTPSConnection
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
if six.PY3:
|
|
kwargs.pop("strict", None) # apparently this is gone in py3
|
|
|
|
# need to temporarily reset here because the real connection
|
|
# inherits from the thing that we are mocking out. Take out
|
|
# the reset if you want to see what I mean :)
|
|
from vcr.patch import force_reset
|
|
|
|
with force_reset():
|
|
self.real_connection = self._baseclass(*args, **kwargs)
|
|
# Make sure to set those attributes as it seems `AWSHTTPConnection` does not
|
|
# set them, making the connection to fail !
|
|
self.real_connection.assert_hostname = kwargs.get("assert_hostname", False)
|
|
self.real_connection.cert_reqs = kwargs.get("cert_reqs", "CERT_NONE")
|
|
|
|
self._sock = None
|