from httpx import Response
from nonebot import logger
from nonebot.compat import type_validate_python

from .exception import CeobeResponseError
from .models import ResponseModel, CookieIdResponse


def process_response(response: Response, parse_model: type[ResponseModel]) -> ResponseModel:
    response.raise_for_status()
    logger.trace(f"小刻食堂请求结果: {response.json().get('message')} {parse_model=}")

    try:
        data = type_validate_python(parse_model, response.json())
    except Exception as e:
        raise CeobeResponseError(f"解析小刻食堂响应失败: {e}")

    if not isinstance(data, CookieIdResponse) and data.code != 0:
        raise CeobeResponseError(f"获取饼数据失败: {data.message}")
    return data