####### httpx ####### HttpxSession represents a wrapper-class around `ClientSession` from `httpx `_ Currently `HttpxSession` is a default session used in `litegram.Bot` .. autoclass:: litegram.client.session.httpx.HttpxSession Usage example ============= .. code-block:: from litegram import Bot from litegram.client.session.httpx import HttpxSession session = HttpxSession() bot = Bot('42:token', session=session) Proxy requests in HttpxSession ================================ In order to use HttpxSession with proxy connector you have to install `httpx-socks `_ Binding session to bot: .. code-block:: from litegram import Bot from litegram.client.session.httpx import HttpxSession session = HttpxSession(proxy="protocol://host:port/") bot = Bot(token="bot token", session=session) .. note:: Only following protocols are supported: http(tunneling), socks4(a), socks5 as httpx_socks `documentation `_ claims. Authorization ------------- Proxy authorization credentials can be specified in proxy URL or come as an instance of :obj:`httpx.BasicAuth` containing login and password. Consider examples: .. code-block:: from httpx import BasicAuth from litegram.client.session.httpx import HttpxSession auth = BasicAuth(login="user", password="password") session = HttpxSession(proxy=("protocol://host:port", auth)) or simply include your basic auth credential in URL .. code-block:: session = HttpxSession(proxy="protocol://user:password@host:port") .. note:: Litegram prefers `BasicAuth` over username and password in URL, so if proxy URL contains login and password and `BasicAuth` object is passed at the same time litegram will use login and password from `BasicAuth` instance. Proxy chains ------------ Since `httpx-socks `_ supports proxy chains, you're able to use them in litegram Example of chain proxies: .. code-block:: from httpx import BasicAuth from litegram.client.session.httpx import HttpxSession auth = BasicAuth(login="user", password="password") session = HttpxSession( proxy={ "protocol0://host0:port0", "protocol1://user:password@host1:port1", ("protocol2://host2:port2", auth), } # can be any iterable if not set )