Spaces:
Sleeping
Sleeping
File size: 1,637 Bytes
01d5a5d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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}")
|