diff --git a/src/kwork_api/__pycache__/client.cpython-312.pyc b/src/kwork_api/__pycache__/client.cpython-312.pyc index 0c7d6db..28add88 100644 Binary files a/src/kwork_api/__pycache__/client.cpython-312.pyc and b/src/kwork_api/__pycache__/client.cpython-312.pyc differ 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 ==========