Files
AioHTTPX/src/aiohttpx/client.py
2025-10-27 22:06:00 +03:00

64 lines
2.0 KiB
Python

from collections.abc import Callable, Mapping
from logging import getLogger
from ssl import SSLContext
from typing import Any
from httpx import URL, Limits
from httpx import AsyncClient as AsyncHTTPXClient
from httpx import _config as c # type: ignore
from httpx import _types as t # type: ignore
from aiohttpx.transports.cache import AsyncCacheTransport
class AioHTTPXClient(AsyncHTTPXClient):
def __init__(
self,
*,
auth: t.AuthTypes | None = None,
params: t.QueryParamTypes | None = None,
headers: t.HeaderTypes | None = None,
cookies: t.CookieTypes | None = None,
verify: SSLContext | str | bool = True,
cert: t.CertTypes | None = None,
proxy: t.ProxyTypes | None = None,
timeout: t.TimeoutTypes = c.DEFAULT_TIMEOUT_CONFIG,
follow_redirects: bool = False,
limits: Limits = c.DEFAULT_LIMITS,
max_redirects: int = c.DEFAULT_MAX_REDIRECTS,
event_hooks: Mapping[str, list[Callable[..., Any]]] | None = None,
base_url: URL | str = '',
trust_env: bool = True,
default_encoding: str | Callable[[bytes], str] = 'utf-8',
redis_url: str | None = None,
key: str | None = None,
limit: int | None = None,
logger: str | None = __name__,
) -> None:
super().__init__(
auth=auth,
params=params,
headers=headers,
cookies=cookies,
verify=verify,
cert=cert,
http1=True,
http2=False,
proxy=proxy,
mounts=None,
timeout=timeout,
follow_redirects=follow_redirects,
limits=limits,
max_redirects=max_redirects,
event_hooks=event_hooks,
base_url=base_url,
transport=AsyncCacheTransport(redis_url, key, limit),
trust_env=trust_env,
default_encoding=default_encoding,
)
self.logger = getLogger(logger)
__all__ = ['AioHTTPXClient']