Add webhook support.

Allows for usage of either `requests` and `aiohttp` when used in
"Standalone" mode.

Fixes #704
This commit is contained in:
Rapptz
2017-08-21 01:54:33 -04:00
parent deaba1f5ab
commit 37b0fdb898
10 changed files with 813 additions and 7 deletions

View File

@ -28,6 +28,7 @@ from re import split as re_split
from .errors import InvalidArgument
import datetime
from base64 import b64encode
from email.utils import parsedate_to_datetime
import asyncio
import json
import warnings, functools
@ -258,6 +259,11 @@ def _bytes_to_base64_data(data):
def to_json(obj):
return json.dumps(obj, separators=(',', ':'), ensure_ascii=True)
def _parse_ratelimit_header(request):
now = parsedate_to_datetime(request.headers['Date'])
reset = datetime.datetime.fromtimestamp(int(request.headers['X-Ratelimit-Reset']), datetime.timezone.utc)
return (reset - now).total_seconds()
@asyncio.coroutine
def maybe_coroutine(f, *args, **kwargs):
if asyncio.iscoroutinefunction(f):