mirror of
https://github.com/mindverse/Second-Me.git
synced 2026-07-18 21:53:26 +00:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
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}")
|