Fix HTTPretty on Python 3.7
This is a revised backport of
5776d97da3
and the following fixup https://github.com/gabrielfalcao/HTTPretty/pull/341
			
			
This commit is contained in:
		
							parent
							
								
									9c6e7f2ee7
								
							
						
					
					
						commit
						354d48fb8d
					
				@ -85,6 +85,7 @@ old_socksocket = None
 | 
			
		||||
old_ssl_wrap_socket = None
 | 
			
		||||
old_sslwrap_simple = None
 | 
			
		||||
old_sslsocket = None
 | 
			
		||||
old_sslcontext_wrap_socket = None
 | 
			
		||||
 | 
			
		||||
if PY3:  # pragma: no cover
 | 
			
		||||
    basestring = (bytes, str)
 | 
			
		||||
@ -100,6 +101,10 @@ try:  # pragma: no cover
 | 
			
		||||
    if not PY3:
 | 
			
		||||
        old_sslwrap_simple = ssl.sslwrap_simple
 | 
			
		||||
    old_sslsocket = ssl.SSLSocket
 | 
			
		||||
    try:
 | 
			
		||||
        old_sslcontext_wrap_socket = ssl.SSLContext.wrap_socket
 | 
			
		||||
    except AttributeError:
 | 
			
		||||
        pass
 | 
			
		||||
except ImportError:  # pragma: no cover
 | 
			
		||||
    ssl = None
 | 
			
		||||
 | 
			
		||||
@ -281,7 +286,7 @@ class fakesock(object):
 | 
			
		||||
            return {
 | 
			
		||||
                'notAfter': shift.strftime('%b %d %H:%M:%S GMT'),
 | 
			
		||||
                'subjectAltName': (
 | 
			
		||||
                    ('DNS', '*%s' % self._host),
 | 
			
		||||
                    ('DNS', '*.%s' % self._host),
 | 
			
		||||
                    ('DNS', self._host),
 | 
			
		||||
                    ('DNS', '*'),
 | 
			
		||||
                ),
 | 
			
		||||
@ -772,7 +777,7 @@ class URIMatcher(object):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, uri, entries, match_querystring=False):
 | 
			
		||||
        self._match_querystring = match_querystring
 | 
			
		||||
        if type(uri).__name__ == 'SRE_Pattern':
 | 
			
		||||
        if type(uri).__name__ in ('SRE_Pattern', 'Pattern'):
 | 
			
		||||
            self.regex = uri
 | 
			
		||||
            result = urlsplit(uri.pattern)
 | 
			
		||||
            if result.scheme == 'https':
 | 
			
		||||
@ -1012,6 +1017,10 @@ class httpretty(HttpBaseClass):
 | 
			
		||||
        if ssl:
 | 
			
		||||
            ssl.wrap_socket = old_ssl_wrap_socket
 | 
			
		||||
            ssl.SSLSocket = old_sslsocket
 | 
			
		||||
            try:
 | 
			
		||||
                ssl.SSLContext.wrap_socket = old_sslcontext_wrap_socket
 | 
			
		||||
            except AttributeError:
 | 
			
		||||
                pass
 | 
			
		||||
            ssl.__dict__['wrap_socket'] = old_ssl_wrap_socket
 | 
			
		||||
            ssl.__dict__['SSLSocket'] = old_sslsocket
 | 
			
		||||
 | 
			
		||||
@ -1058,6 +1067,14 @@ class httpretty(HttpBaseClass):
 | 
			
		||||
            ssl.wrap_socket = fake_wrap_socket
 | 
			
		||||
            ssl.SSLSocket = FakeSSLSocket
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                def fake_sslcontext_wrap_socket(cls, *args, **kwargs):
 | 
			
		||||
                    return fake_wrap_socket(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
                ssl.SSLContext.wrap_socket = fake_sslcontext_wrap_socket
 | 
			
		||||
            except AttributeError:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
            ssl.__dict__['wrap_socket'] = fake_wrap_socket
 | 
			
		||||
            ssl.__dict__['SSLSocket'] = FakeSSLSocket
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user