| Viewing file:  proxy.py (1.12 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from __future__ import annotations
 import typing
 
 from .url import Url
 
 if typing.TYPE_CHECKING:
 from ..connection import ProxyConfig
 
 
 def connection_requires_http_tunnel(
 proxy_url: Url | None = None,
 proxy_config: ProxyConfig | None = None,
 destination_scheme: str | None = None,
 ) -> bool:
 """
 Returns True if the connection requires an HTTP CONNECT through the proxy.
 
 :param URL proxy_url:
 URL of the proxy.
 :param ProxyConfig proxy_config:
 Proxy configuration from poolmanager.py
 :param str destination_scheme:
 The scheme of the destination. (i.e https, http, etc)
 """
 # If we're not using a proxy, no way to use a tunnel.
 if proxy_url is None:
 return False
 
 # HTTP destinations never require tunneling, we always forward.
 if destination_scheme == "http":
 return False
 
 # Support for forwarding with HTTPS proxies and HTTPS destinations.
 if (
 proxy_url.scheme == "https"
 and proxy_config
 and proxy_config.use_forwarding_for_https
 ):
 return False
 
 # Otherwise always use a tunnel.
 return True
 
 |