import httpx import requests from .error import VQLError from .logger import logging def request( json: dict, url: str, headers: dict | None = None, ) -> dict: try: res = requests.post(url=url, json=json, headers=headers) except Exception as error: logging.error( "Request URL: {} | Request body: {} | Error: {}".format(url, json, error) ) raise VQLError(511, detail=str(error)) if res.status_code < 299: return res.json() elif res.status_code == 404: logging.error("Request URL: {} | Error[404]: 请求错误: 错误的地址".format(url)) raise VQLError(516) elif res.status_code == 422: logging.error( "Request URL: {} | Request body: {} | Error[422]: 请求错误: 错误的请求格式".format( url, json ) ) raise VQLError(517) else: info = res.json() logging.error( "Request URL: {} | Request body: {} | Error: {}".format(url, json, info) ) raise VQLError(511, detail=info) async def arequest(url: str, json: dict, headers: dict | None = None) -> dict: try: async with httpx.AsyncClient() as client: res = await client.post(url=url, json=json, headers=headers, timeout=30) except Exception as error: logging.error( "Request URL: {} | Request body: {} | Error: {}".format(url, json, error) ) raise VQLError(511, detail=str(error)) if res.status_code < 299: return res.json() elif res.status_code == 404: logging.error("Request URL: {} | Error[404]: 请求错误: 错误的地址".format(url)) raise VQLError(516) elif res.status_code == 422: logging.error( "Request URL: {} | Request body: {} | Error[422]: 请求错误: 错误的请求格式".format( url, json ) ) raise VQLError(517) else: info = res.json() logging.error( "Request URL: {} | Request body: {} | Error: {}".format(url, json, info) ) raise VQLError(511, detail=info)