mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 14:33:26 +00:00
feat: [#38] add http client
This commit is contained in:
parent
306ae27171
commit
4f29e4de73
|
@ -57,6 +57,17 @@ class Application:
|
|||
|
||||
logger.info("Initializing clients")
|
||||
|
||||
http_yandex_tts_client = clients.AsyncHttpClient(
|
||||
base_url="yandex", # todo add yandex api url from settings
|
||||
proxy_settings=settings.proxy,
|
||||
)
|
||||
disposable_resources.append(
|
||||
DisposableResource(
|
||||
name="http_client yandex",
|
||||
dispose_callback=http_yandex_tts_client.close(),
|
||||
)
|
||||
)
|
||||
|
||||
# Repositories
|
||||
|
||||
logger.info("Initializing repositories")
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
from .http_client import AsyncHttpClient
|
||||
from .postgres import AsyncPostgresClient
|
||||
|
||||
__all__ = ["AsyncPostgresClient"]
|
||||
__all__ = [
|
||||
"AsyncHttpClient",
|
||||
"AsyncPostgresClient",
|
||||
]
|
||||
|
|
36
src/assistant/lib/clients/http_client.py
Normal file
36
src/assistant/lib/clients/http_client.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
import httpx
|
||||
|
||||
import lib.app.split_settings as app_split_settings
|
||||
|
||||
|
||||
class AsyncHttpClient:
|
||||
def __init__(
|
||||
self,
|
||||
proxy_settings: app_split_settings.ProxySettings,
|
||||
base_url: str | None = None,
|
||||
**client_params: dict[str, str],
|
||||
) -> None:
|
||||
self.base_url = base_url if base_url else ""
|
||||
self.proxy_settings = proxy_settings
|
||||
self.proxies = self._get_proxies_from_settings()
|
||||
self.client_params = client_params
|
||||
|
||||
self.client = self._get_client()
|
||||
|
||||
def _get_proxies_from_settings(self) -> dict[str, str] | None:
|
||||
if not self.proxy_settings.enable:
|
||||
return None
|
||||
proxies = {"all://": self.proxy_settings.dsn}
|
||||
return proxies
|
||||
|
||||
def _get_client(self):
|
||||
return httpx.AsyncClient(
|
||||
base_url=self.base_url,
|
||||
proxies=self.proxies, # type: ignore
|
||||
**self.client_params,
|
||||
)
|
||||
|
||||
async def close(self):
|
||||
if not self.client:
|
||||
return
|
||||
await self.client.aclose()
|
Loading…
Reference in New Issue
Block a user