From e64d1f8346805cfafa789a7ed5835fba6cb1b0ee Mon Sep 17 00:00:00 2001 From: root Date: Sun, 29 Mar 2026 22:09:10 +0000 Subject: [PATCH] feat: add comprehensive logging for API requests and responses --- .../__pycache__/client.cpython-312.pyc | Bin 60888 -> 60846 bytes src/kwork_api/client.py | 32 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/kwork_api/__pycache__/client.cpython-312.pyc b/src/kwork_api/__pycache__/client.cpython-312.pyc index 0c7d6db7fcf3e366101b7926a1a554ac387840eb..28add882e1babb673d3c4df784f4514565967b19 100644 GIT binary patch delta 243 zcmca{n|a-BX5Q1hyj%=G(6;Dg=GKk8|794nHuK8PU}9yh;jiJGd`#Y%-P@dD0%MQj zWB~=k$t&e$C&wwUGsJ9V<2&I?A?&EmR!jGWr06WnKbUlh@pyh*R3 z-p!b?SHz8zVIiZd4%;GTAZw|ns|oW#K1Nr4wuAgG+(6DzDITEsQ8h+aBetXJEFiWv zBT(Z}9YzpapAn?S2+THNb7NyaYQ^Yk%X8G49mqb$1Tym&D@gq@HZYr0*v)|Xm<+$0 VHuEtqZB`J+fZ5G>^Jab3eE|2DK$idj delta 280 zcmZ2?oB76VX5Q1hyj%=GkhSP!=I)KW|7954HuK8PVB#09;V+Q@$$&tX)MP^o;mNDz zo!BGI8746H=uiG4Z^$hJkp;@jO*T-FWK`Vjr4Yf*C^&hsb}CnqDp0ma8Awd#(0Reg zx%s0`A0w}!^%R%sz7u^HXkQf3o7|ySQSZ*k*el{D&ajZt)rxHqGmy1Z(~XJwARnWv zE!#nU7fB%Js0I&E{HO_|8w1->Qx*{0k`bu!s1+lKZOaH$bBqDRKE}l6Cc=Jz{)$A7 diff --git a/src/kwork_api/client.py b/src/kwork_api/client.py index c70767d..33f0265 100644 --- a/src/kwork_api/client.py +++ b/src/kwork_api/client.py @@ -248,6 +248,9 @@ class KworkClient: "l_remember_me": "1", } + logger.info(f"Login request: POST https://kwork.ru/api/user/login (user: {username})") + logger.debug(f"Login payload: {login_data}") + response = await http_client.post( "https://kwork.ru/api/user/login", json=login_data, @@ -261,12 +264,20 @@ class KworkClient: }, ) + logger.debug(f"Login response status: {response.status_code}") + logger.debug(f"Login response headers: {dict(response.headers)}") + if response.status_code != 200: + logger.error(f"Login failed with status {response.status_code}: {response.text[:200]}") raise KworkAuthError(f"Login failed: {response.status_code}") response_data = response.json() cookies = dict(response.cookies) + logger.info(f"Login successful: user_id={cookies.get('userId')}, csrf_token={response_data.get('csrftoken', 'N/A')[:20] if response_data.get('csrftoken') else 'N/A'}") + logger.debug(f"Login response data: {response_data}") + logger.debug(f"Login cookies: {list(cookies.keys())}") + # Debug: print response for troubleshooting import logging logger = logging.getLogger(__name__) @@ -404,11 +415,32 @@ class KworkClient: Response JSON data """ http_client = self._get_httpx_client() + + # Log request + full_url = f"{self.base_url}{endpoint}" if not endpoint.startswith("http") else endpoint + logger.debug(f"API Request: {method} {full_url}") + logger.debug(f"Request kwargs: {kwargs}") try: response = await http_client.request(method, endpoint, **kwargs) + + # Log response + logger.debug(f"API Response: {response.status_code} {response.reason_phrase}") + logger.debug(f"Response headers: {dict(response.headers)}") + + # Log response body (truncated for large responses) + try: + response_text = response.text + if len(response_text) > 500: + logger.debug(f"Response body (truncated): {response_text[:500]}...") + else: + logger.debug(f"Response body: {response_text}") + except Exception: + logger.debug("Response body: ") + return self._handle_response(response) except httpx.RequestError as e: + logger.error(f"Network error for {method} {full_url}: {e}") raise KworkNetworkError(f"Request failed: {e}") from e # ========== Catalog Endpoints ==========