def __post(self, data):
with aiohttp.Timeout(self.timeout, loop=self.loop):
try:
response = await self.__session.post(str(self.__url), data=data, headers=self.__headers)
except aiohttp.ClientError as e:
log.debug('Caught during POST request: %r', e)
raise ConnectionError(str(self.url))
else:
if response.status == CSRF_ERROR_CODE:
# Send request again with CSRF header
self.__headers[CSRF_HEADER] = response.headers[CSRF_HEADER]
log.debug('Setting CSRF header: %s = %s',
CSRF_HEADER, response.headers[CSRF_HEADER])
await response.release()
return await self.__post(data)
elif response.status == AUTH_ERROR_CODE:
await response.release()
log.debug('Authentication failed')
raise AuthError(str(self.url))
else:
try:
answer = await response.json()
except aiohttp.ClientResponseError as e:
text = textwrap.shorten(await response.text(),
50, placeholder='...')
raise RPCError('Server sent malformed JSON: {}'.format(text))
else:
return answer
评论列表
文章目录