aboutsummaryrefslogtreecommitdiff
path: root/discord/webhook.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/webhook.py')
-rw-r--r--discord/webhook.py21
1 files changed, 8 insertions, 13 deletions
diff --git a/discord/webhook.py b/discord/webhook.py
index d9d380a1..9d336aee 100644
--- a/discord/webhook.py
+++ b/discord/webhook.py
@@ -135,8 +135,7 @@ class AsyncWebhookAdapter(WebhookAdapter):
self.session = session
self.loop = session.loop
- @asyncio.coroutine
- def request(self, verb, url, payload=None, multipart=None):
+ async def request(self, verb, url, payload=None, multipart=None):
headers = {}
data = None
if payload:
@@ -152,9 +151,8 @@ class AsyncWebhookAdapter(WebhookAdapter):
data.add_field(key, value)
for tries in range(5):
- r = yield from self.session.request(verb, url, headers=headers, data=data)
- try:
- data = yield from r.text(encoding='utf-8')
+ async with self.session.request(verb, url, headers=headers, data=data) as r:
+ data = await r.text(encoding='utf-8')
if r.headers['Content-Type'] == 'application/json':
data = json.loads(data)
@@ -162,7 +160,7 @@ class AsyncWebhookAdapter(WebhookAdapter):
remaining = r.headers.get('X-Ratelimit-Remaining')
if remaining == '0' and r.status != 429:
delta = utils._parse_ratelimit_header(r)
- yield from asyncio.sleep(delta, loop=self.loop)
+ await asyncio.sleep(delta, loop=self.loop)
if 300 > r.status >= 200:
return data
@@ -170,11 +168,11 @@ class AsyncWebhookAdapter(WebhookAdapter):
# we are being rate limited
if r.status == 429:
retry_after = data['retry_after'] / 1000.0
- yield from asyncio.sleep(retry_after, loop=self.loop)
+ await asyncio.sleep(retry_after, loop=self.loop)
continue
if r.status in (500, 502):
- yield from asyncio.sleep(1 + tries * 2, loop=self.loop)
+ await asyncio.sleep(1 + tries * 2, loop=self.loop)
continue
if r.status == 403:
@@ -183,12 +181,9 @@ class AsyncWebhookAdapter(WebhookAdapter):
raise NotFound(r, data)
else:
raise HTTPException(r, data)
- finally:
- yield from r.release()
- @asyncio.coroutine
- def handle_execution_response(self, response, *, wait):
- data = yield from response
+ async def handle_execution_response(self, response, *, wait):
+ data = await response
if not wait:
return data