Exemple #1
0
    def get_connection(self, *args, **kwargs):
        conn = HTTPAdapter.get_connection(self, *args, **kwargs)

        # Override the urlopen method on this connection
        if not hasattr(conn.urlopen, "wrapped"):
            orig_urlopen = conn.urlopen

            def urlopen(*args, **kwargs):
                timeout = kwargs.pop("timeout", None)
                if isinstance(timeout, Timeout):
                    timeout = Timeout.from_float(timeout.connect_timeout)

                return orig_urlopen(*args, timeout=timeout, **kwargs)

            conn.urlopen = urlopen
            conn.urlopen.wrapped = True

        return conn
Exemple #2
0
    def get_connection(self, *args, **kwargs):
        conn = HTTPAdapter.get_connection(self, *args, **kwargs)

        # Override the urlopen method on this connection
        if not hasattr(conn.urlopen, "wrapped"):
            orig_urlopen = conn.urlopen

            def urlopen(*args, **kwargs):
                timeout = kwargs.pop("timeout", None)
                if isinstance(timeout, Timeout):
                    timeout = Timeout.from_float(timeout.connect_timeout)

                return orig_urlopen(*args, timeout=timeout, **kwargs)

            conn.urlopen = urlopen
            conn.urlopen.wrapped = True

        return conn
Exemple #3
0
 def get_connection(self, url, proxies=None):
     # parse URL
     parsed = urlparse(url)
     host = parsed.hostname
     port = parsed.port
     if port is None:
         if parsed.scheme == 'http':
             port = 80
         else:
             port = 443
     # check record
     if parsed.hostname in dnsMap:
         dnsRecord = dnsMap[parsed.hostname]
     else:
         family = allowed_gai_family()
         dnsRecord = socket.getaddrinfo(host, port, family,
                                        socket.SOCK_STREAM)
         dnsRecord = list(
             set([socket.getfqdn(record[4][0]) for record in dnsRecord]))
         dnsMap[parsed.hostname] = dnsRecord
     dnsRecord = copy.copy(dnsRecord)
     random.shuffle(dnsRecord)
     # loop over all hosts
     err = None
     for hostname in dnsRecord:
         addr = hostname
         if parsed.port is not None:
             addr += ':{0}'.format(parsed.port)
         tmp_url = parsed._replace(netloc=addr).geturl()
         try:
             con = HTTPAdapter.get_connection(self,
                                              tmp_url,
                                              proxies=proxies)
             # return if valid
             if con is not None:
                 return con
         except Exception as e:
             err = e
     if err is not None:
         raise err
     return None
Exemple #4
0
 def get_connection(self, url, proxies=None):
     url = url.replace(self.redirect_source, self.redirect_target)
     return HTTPAdapter.get_connection(self, url, proxies=proxies)