diff --git a/ya_tracker_client/domain/client/base.py b/ya_tracker_client/domain/client/base.py index c8adffb..ac19adf 100644 --- a/ya_tracker_client/domain/client/base.py +++ b/ya_tracker_client/domain/client/base.py @@ -1,8 +1,11 @@ from abc import ABC, abstractmethod from http import HTTPStatus +from json import dumps from logging import getLogger from typing import Any +from aiohttp import BytesPayload + from ya_tracker_client.domain.client.errors import ( ClientAuthError, ClientError, @@ -55,11 +58,17 @@ async def request( payload: dict[str, Any] | None = None, ) -> bytes: uri = f"{self._base_url}/{self._api_version}{uri}" + + bytes_payload = BytesPayload( + value=bytes(dumps(payload), encoding="utf-8"), + content_type="application/json", + ) + status, body = await self._make_request( method=method, url=uri, params=params, - data=payload, + data=bytes_payload, ) self._check_status(status, body) return body @@ -70,7 +79,7 @@ async def _make_request( method: str, url: str, params: dict[str, Any] | None = None, - data: bytes | None = None, + data: bytes | BytesPayload | None = None, ) -> tuple[int, bytes]: """ Get raw response from via http-client. diff --git a/ya_tracker_client/infrastructure/client.py b/ya_tracker_client/infrastructure/client.py index 1f47ba0..3233028 100644 --- a/ya_tracker_client/infrastructure/client.py +++ b/ya_tracker_client/infrastructure/client.py @@ -2,7 +2,7 @@ from ssl import create_default_context from typing import Any -from aiohttp import ClientSession, ClientTimeout, TCPConnector +from aiohttp import BytesPayload, ClientSession, ClientTimeout, TCPConnector from certifi import where from ya_tracker_client.domain.client import BaseClient @@ -51,7 +51,7 @@ async def _make_request( method: str, url: str, params: dict[str, Any] | None = None, - data: bytes | None = None, + data: bytes | BytesPayload | None = None, ) -> tuple[int, bytes]: session = self._get_session() async with session.request(method, url, params=params, data=data) as response: