Gemini
feat: add detailed logging
01d5a5d
from typing import Any
from dataclasses import dataclass
import logging
logger = logging.getLogger(__name__)
@dataclass
class APIResponse:
@staticmethod
def success(data: Any = None, message: str = "success") -> dict:
return {"code": 0, "message": message, "data": data}
@staticmethod
def error(message: str, code: int = 1, data: Any = None) -> dict:
return {"code": code, "message": message, "data": data}
class ResponseHandler:
"""HTTP Response Handler Utility Class"""
@staticmethod
def handle_response(response, success_log=None, error_prefix="Operation"):
"""
Handle standard HTTP response
Args:
response: requests.Response object
success_log: Success log message (optional)
error_prefix: Error message prefix
Returns:
dict: Response data
Raises:
Exception: When response is not successful
"""
if response.status_code == 200:
data = response.json()
if data.get("code") == 0:
if success_log:
logger.info(success_log)
return data.get("data")
else:
error_text = data.get("message", "Unknown error")
logger.error(f"{error_prefix} failed: {error_text}")
raise Exception(f"{error_prefix} failed: {error_text}")
else:
error_text = response.text
logger.error(f"{error_prefix} failed: {error_text}")
raise Exception(f"{error_prefix} failed: {error_text}")