Optionally support PUT in send_document

Defaults to POST. Matrix display name update uses PUT.
matrix-delivery
Jason Robinson 2020-12-25 01:26:03 +02:00
rodzic 602c576aec
commit 3dd9921899
3 zmienionych plików z 12 dodań i 5 usunięć

Wyświetl plik

@ -67,13 +67,14 @@ class MatrixProfile(Profile, MatrixEntityMixin):
"payload": {
"username": f"{self.localpart}",
"type": "m.login.application_service",
}
},
})
payloads.append({
"endpoint": f"{super().get_endpoint()}/profile/{self.mxid}/displayname",
"payload": {
"displayname": self.name,
},
"method": "put",
})
# TODO avatar url in mxc format
return payloads

Wyświetl plik

@ -142,18 +142,21 @@ def handle_send(
"headers": {},
"payload": None,
"urls": set(),
"method": None,
},
"diaspora": {
"auth": None,
"headers": {},
"payload": None,
"urls": set(),
"method": None,
},
"matrix": {
"auth": None,
"headers": {},
"payload": None,
"urls": set(),
"method": None,
},
}
skip_ready_payload = {
@ -288,7 +291,6 @@ def handle_send(
# Don't try to do anything with these entities currently
skip_ready_payload["matrix"] = True
continue
# noinspection PyBroadException
payload_info = []
# noinspection PyBroadException
try:
@ -314,6 +316,7 @@ def handle_send(
},
"payload": rendered_payload,
"urls": {payload["endpoint"]},
"method": payload["method"],
})
except Exception:
logger.error(
@ -355,6 +358,7 @@ def handle_send(
payload["payload"],
auth=payload["auth"],
headers=payload["headers"],
method=payload["method"],
)
except Exception as ex:
logger.error("handle_send - failed to send payload to %s: %s, payload: %s", url, ex, payload["payload"])

Wyświetl plik

@ -157,7 +157,7 @@ def parse_http_date(date):
raise ValueError("%r is not a valid date" % date) from exc
def send_document(url, data, timeout=10, *args, **kwargs):
def send_document(url, data, timeout=10, method="post", *args, **kwargs):
"""Helper method to send a document via POST.
Additional ``*args`` and ``**kwargs`` will be passed on to ``requests.post``.
@ -165,9 +165,10 @@ def send_document(url, data, timeout=10, *args, **kwargs):
:arg url: Full url to send to, including protocol
:arg data: Dictionary (will be form-encoded), bytes, or file-like object to send in the body
:arg timeout: Seconds to wait for response (defaults to 10)
:arg method: Method to use, defaults to post
:returns: Tuple of status code (int or None) and error (exception class instance or None)
"""
logger.debug("send_document: url=%s, data=%s, timeout=%s", url, data, timeout)
logger.debug("send_document: url=%s, data=%s, timeout=%s, method=%s", url, data, timeout, method)
headers = CaseInsensitiveDict({
'User-Agent': USER_AGENT,
})
@ -177,8 +178,9 @@ def send_document(url, data, timeout=10, *args, **kwargs):
kwargs.update({
"data": data, "timeout": timeout, "headers": headers
})
request_func = getattr(requests, method)
try:
response = requests.post(url, *args, **kwargs)
response = request_func(url, *args, **kwargs)
logger.debug("send_document: response status code %s", response.status_code)
return response.status_code, None
except RequestException as ex: