From bc93c66bc6ce642508bbcdff988a1df0fc653ba8 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Mon, 5 Feb 2024 04:37:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20=E5=9C=A8=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E4=B8=AD=E4=BD=BF=E7=94=A8`httpx`=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2`aiohttp`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gsuid_core/utils/api/mys/request.py | 118 ++++++++++++++-------------- 1 file changed, 58 insertions(+), 60 deletions(-) diff --git a/gsuid_core/utils/api/mys/request.py b/gsuid_core/utils/api/mys/request.py index 92a6a51..70a6104 100644 --- a/gsuid_core/utils/api/mys/request.py +++ b/gsuid_core/utils/api/mys/request.py @@ -21,6 +21,7 @@ from typing import ( overload, ) +import httpx from aiohttp import TCPConnector, ClientSession, ContentTypeError from gsuid_core.logger import logger @@ -387,9 +388,7 @@ class BaseMysApi: else: proxy = None - async with ClientSession( - connector=TCPConnector(verify_ssl=ssl_verify) - ) as client: + async with httpx.AsyncClient(verify=ssl_verify, proxy=proxy) as client: raw_data = {} uid = None if params and 'role_id' in params: @@ -417,74 +416,73 @@ class BaseMysApi: logger.debug(header) for _ in range(2): - async with client.request( + resp = await client.request( method, url=url, headers=header, params=params, json=data, - proxy=proxy, timeout=300, - ) as resp: - try: - raw_data = await resp.json() - except ContentTypeError: - _raw_data = await resp.text() - raw_data = {'retcode': -999, 'data': _raw_data} + ) + try: + raw_data = resp.json() + except ContentTypeError: + _raw_data = resp.text + raw_data = {'retcode': -999, 'data': _raw_data} - logger.debug(raw_data) + logger.debug(raw_data) - # 判断retcode - if 'retcode' in raw_data: - retcode: int = raw_data['retcode'] - elif 'code' in raw_data: - retcode: int = raw_data['code'] - else: - retcode = 0 + # 判断retcode + if 'retcode' in raw_data: + retcode: int = raw_data['retcode'] + elif 'code' in raw_data: + retcode: int = raw_data['code'] + else: + retcode = 0 - # 针对1034做特殊处理 - if retcode == 1034 or retcode == 5003: - if uid: - header['x-rpc-challenge_game'] = ( - '6' if self.is_sr else '2' - ) - header['x-rpc-page'] = ( - 'v1.4.1-rpg_#/rpg' - if self.is_sr - else 'v4.1.5-ys_#ys' - ) - header['x-rpc-tool-verison'] = ( - 'v1.4.1-rpg' if self.is_sr else 'v4.1.5-ys' + # 针对1034做特殊处理 + if retcode == 1034 or retcode == 5003: + if uid: + header['x-rpc-challenge_game'] = ( + '6' if self.is_sr else '2' + ) + header['x-rpc-page'] = ( + 'v1.4.1-rpg_#/rpg' + if self.is_sr + else 'v4.1.5-ys_#ys' + ) + header['x-rpc-tool-verison'] = ( + 'v1.4.1-rpg' if self.is_sr else 'v4.1.5-ys' + ) + + if core_plugins_config.get_config('MysPass').data: + pass_header = copy.deepcopy(header) + ch = await self._upass(pass_header) + if ch == '': + return 114514 + else: + header['x-rpc-challenge'] = ch + + if 'DS' in header: + if isinstance(params, Dict): + q = '&'.join( + [ + f'{k}={v}' + for k, v in sorted( + params.items(), + key=lambda x: x[0], + ) + ] ) + else: + q = '' + header['DS'] = get_ds_token(q, data) - if core_plugins_config.get_config('MysPass').data: - pass_header = copy.deepcopy(header) - ch = await self._upass(pass_header) - if ch == '': - return 114514 - else: - header['x-rpc-challenge'] = ch - - if 'DS' in header: - if isinstance(params, Dict): - q = '&'.join( - [ - f'{k}={v}' - for k, v in sorted( - params.items(), - key=lambda x: x[0], - ) - ] - ) - else: - q = '' - header['DS'] = get_ds_token(q, data) - - logger.debug(header) - elif retcode != 0: - return retcode - else: - return raw_data + logger.debug(header) + elif retcode != 0: + return retcode + else: + return raw_data else: return -999