def __init__(self, request, scheme, host): self.request = request self.scheme = scheme self.host, self.port = get_hostport(scheme, host) self.full_url = '%s://%s:%s' % (scheme, self.host, self.port) self.parser = request.parser request.new_parser() self.headers = request.client.tunnel_headers.copy()
def create(cls, request): url = urlparse(request.proxy or request.url) host, port = get_hostport(url.scheme, url.netloc) return cls( url.scheme, host, port, request.tunnel, request.verify, request.cert )
def _set_proxy(self, proxies): url = urlparse(self.url) request_proxies = self.client.proxies.copy() if proxies: request_proxies.update(proxies) self.proxies = request_proxies # if url.scheme in request_proxies: host, port = get_hostport(url.scheme, url.netloc) no_proxy = [n for n in request_proxies.get('no', '').split(',') if n] if not any(map(host.endswith, no_proxy)): proxy_url = request_proxies[url.scheme] if url.scheme in tls_schemes: self._tunnel = proxy_url else: self._proxy = proxy_url
def _set_proxy(self, proxies, ignored): url = urlparse(self.url) self.unredirected_headers['host'] = host_no_default_port(url.scheme, url.netloc) if url.scheme in tls_schemes: self._ssl = self.client._ssl_context(verify=self.verify, **ignored) request_proxies = self.client.proxies.copy() if proxies: request_proxies.update(proxies) self.proxies = request_proxies # if url.scheme in request_proxies: host, port = get_hostport(url.scheme, url.netloc) no_proxy = [n for n in request_proxies.get('no', '').split(',') if n] if not any(map(host.endswith, no_proxy)): url = request_proxies[url.scheme] if not self._ssl: self._proxy = url else: self._tunnel = HttpTunnel(self, url)
def _set_hostport(self, scheme, host): self._tunnel = None self._proxy = None self.host, self.port = get_hostport(scheme, host)
def scheme_host_port(url): url = urlparse(url) host, port = get_hostport(url.scheme, url.netloc) return url.scheme, host, port
def tunnel_address(self): if self.tunnel: url = urlparse(self.tunnel) return get_hostport(url.scheme, url.netloc)