Example #1
0
    async def _send(self, method: Method, endpoint: str,
                    content: Union[bytes, str], query_params: Dict[str, str],
                    headers: Dict[str, str]) -> 'JSON':
        while True:
            request = self.session.request(str(method),
                                           endpoint,
                                           data=content,
                                           params=query_params,
                                           headers=headers)
            async with request as response:
                if response.status < 200 or response.status >= 300:
                    errcode = message = None
                    try:
                        response_data = await response.json()
                        errcode = response_data["errcode"]
                        message = response_data["error"]
                    except (JSONDecodeError, ContentTypeError, KeyError):
                        pass
                    raise make_request_error(http_status=response.status,
                                             text=await response.text(),
                                             errcode=errcode,
                                             message=message)

                if response.status == 429:
                    resp = await response.json()
                    await asyncio.sleep(resp["retry_after_ms"] / 1000,
                                        loop=self.loop)
                else:
                    return await response.json()
Example #2
0
 async def _send(
     self,
     method: Method,
     url: URL,
     content: bytes | bytearray | str | AsyncBody,
     query_params: dict[str, str],
     headers: dict[str, str],
 ) -> JSON:
     request = self.session.request(
         str(method), url, data=content, params=query_params, headers=headers
     )
     async with request as response:
         if response.status < 200 or response.status >= 300:
             errcode = message = None
             try:
                 response_data = await response.json()
                 errcode = response_data["errcode"]
                 message = response_data["error"]
             except (JSONDecodeError, ContentTypeError, KeyError):
                 pass
             raise make_request_error(
                 http_status=response.status,
                 text=await response.text(),
                 errcode=errcode,
                 message=message,
             )
         return await response.json()