parent
0b19fabbf0
commit
1c8d1b0289
@ -131,7 +131,7 @@ class HTTPClient:
|
|||||||
|
|
||||||
return await self.__session.ws_connect(url, **kwargs)
|
return await self.__session.ws_connect(url, **kwargs)
|
||||||
|
|
||||||
async def request(self, route, *, files=None, **kwargs):
|
async def request(self, route, *, files=None, form=None, **kwargs):
|
||||||
bucket = route.bucket
|
bucket = route.bucket
|
||||||
method = route.method
|
method = route.method
|
||||||
url = route.url
|
url = route.url
|
||||||
@ -181,6 +181,13 @@ class HTTPClient:
|
|||||||
if files:
|
if files:
|
||||||
for f in files:
|
for f in files:
|
||||||
f.reset(seek=tries)
|
f.reset(seek=tries)
|
||||||
|
|
||||||
|
if form:
|
||||||
|
form_data = aiohttp.FormData()
|
||||||
|
for params in form:
|
||||||
|
form_data.add_field(**params)
|
||||||
|
kwargs['data'] = form_data
|
||||||
|
|
||||||
try:
|
try:
|
||||||
async with self.__session.request(method, url, **kwargs) as r:
|
async with self.__session.request(method, url, **kwargs) as r:
|
||||||
log.debug('%s %s with %s has returned %s', method, url, kwargs.get('data'), r.status)
|
log.debug('%s %s with %s has returned %s', method, url, kwargs.get('data'), r.status)
|
||||||
@ -371,7 +378,7 @@ class HTTPClient:
|
|||||||
|
|
||||||
def send_files(self, channel_id, *, files, content=None, tts=False, embed=None, nonce=None, allowed_mentions=None, message_reference=None):
|
def send_files(self, channel_id, *, files, content=None, tts=False, embed=None, nonce=None, allowed_mentions=None, message_reference=None):
|
||||||
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
|
||||||
form = aiohttp.FormData()
|
form = []
|
||||||
|
|
||||||
payload = {'tts': tts}
|
payload = {'tts': tts}
|
||||||
if content:
|
if content:
|
||||||
@ -385,15 +392,25 @@ class HTTPClient:
|
|||||||
if message_reference:
|
if message_reference:
|
||||||
payload['message_reference'] = message_reference
|
payload['message_reference'] = message_reference
|
||||||
|
|
||||||
form.add_field('payload_json', utils.to_json(payload))
|
form.append({'name': 'payload_json', 'value': utils.to_json(payload)})
|
||||||
if len(files) == 1:
|
if len(files) == 1:
|
||||||
file = files[0]
|
file = files[0]
|
||||||
form.add_field('file', file.fp, filename=file.filename, content_type='application/octet-stream')
|
form.append({
|
||||||
|
'name': 'file',
|
||||||
|
'value': file.fp,
|
||||||
|
'filename': file.filename,
|
||||||
|
'content_type': 'application/octet-stream'
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
for index, file in enumerate(files):
|
for index, file in enumerate(files):
|
||||||
form.add_field('file%s' % index, file.fp, filename=file.filename, content_type='application/octet-stream')
|
form.append({
|
||||||
|
'name': 'file%s' % index,
|
||||||
|
'value': file.fp,
|
||||||
|
'filename': file.filename,
|
||||||
|
'content_type': 'application/octet-stream'
|
||||||
|
})
|
||||||
|
|
||||||
return self.request(r, data=form, files=files)
|
return self.request(r, form=form, files=files)
|
||||||
|
|
||||||
async def ack_message(self, channel_id, message_id):
|
async def ack_message(self, channel_id, message_id):
|
||||||
r = Route('POST', '/channels/{channel_id}/messages/{message_id}/ack', channel_id=channel_id, message_id=message_id)
|
r = Route('POST', '/channels/{channel_id}/messages/{message_id}/ack', channel_id=channel_id, message_id=message_id)
|
||||||
|
@ -203,13 +203,6 @@ class AsyncWebhookAdapter(WebhookAdapter):
|
|||||||
if reason:
|
if reason:
|
||||||
headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ')
|
headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ')
|
||||||
|
|
||||||
if multipart:
|
|
||||||
data = aiohttp.FormData()
|
|
||||||
for key, value in multipart.items():
|
|
||||||
if key.startswith('file'):
|
|
||||||
data.add_field(key, value[1], filename=value[0], content_type=value[2])
|
|
||||||
else:
|
|
||||||
data.add_field(key, value)
|
|
||||||
|
|
||||||
base_url = url.replace(self._request_url, '/') or '/'
|
base_url = url.replace(self._request_url, '/') or '/'
|
||||||
_id = self._webhook_id
|
_id = self._webhook_id
|
||||||
@ -217,6 +210,14 @@ class AsyncWebhookAdapter(WebhookAdapter):
|
|||||||
for file in files:
|
for file in files:
|
||||||
file.reset(seek=tries)
|
file.reset(seek=tries)
|
||||||
|
|
||||||
|
if multipart:
|
||||||
|
data = aiohttp.FormData()
|
||||||
|
for key, value in multipart.items():
|
||||||
|
if key.startswith('file'):
|
||||||
|
data.add_field(key, value[1], filename=value[0], content_type=value[2])
|
||||||
|
else:
|
||||||
|
data.add_field(key, value)
|
||||||
|
|
||||||
async with self.session.request(verb, url, headers=headers, data=data) as r:
|
async with self.session.request(verb, url, headers=headers, data=data) as r:
|
||||||
log.debug('Webhook ID %s with %s %s has returned status code %s', _id, verb, base_url, r.status)
|
log.debug('Webhook ID %s with %s %s has returned status code %s', _id, verb, base_url, r.status)
|
||||||
# Coerce empty strings to return None for hygiene purposes
|
# Coerce empty strings to return None for hygiene purposes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user