Skip to content

Commit 4472f30

Browse files
committed
Clean up upload to external URL code
1 parent 6569ce0 commit 4472f30

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

mautrix/client/api/modules/media_repository.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ async def upload_media(
141141
path = MediaPath.unstable["fi.mau.msc2246"].upload[server_name][media_id].complete
142142

143143
if upload_url is not None:
144-
task = self._upload_to_url(upload_url, path, data)
144+
task = self._upload_to_url(upload_url, path, headers, data)
145145
else:
146146
task = self.api.request(
147147
method, path, content=data, headers=headers, query_params=query
@@ -279,22 +279,29 @@ async def get_media_repo_config(self) -> MediaRepoConfig:
279279
except SerializerError as e:
280280
raise MatrixResponseError("Invalid MediaRepoConfig in response") from e
281281

282-
async def _upload_to_url(self, upload_url: str, post_upload_path: str, data: Any):
282+
async def _upload_to_url(
283+
self,
284+
upload_url: str,
285+
post_upload_path: str,
286+
headers: dict[str, str],
287+
data: bytes | bytearray | AsyncIterable[bytes],
288+
) -> None:
283289
retry_count = self.api.default_retry_count
284290
backoff = 4
285291
while True:
286-
upload_response = await self.api.session.request(
287-
Method.PUT.name, upload_url, data=data
288-
)
292+
self.log.debug("Uploading media to external URL %s", upload_url)
293+
upload_response = await self.api.session.put(upload_url, data=data, headers=headers)
289294
if not upload_response.ok:
290295
if retry_count == 0:
291296
raise make_request_error(
292297
http_status=upload_response.status,
293298
text=await upload_response.text(),
299+
errcode="COM.BEEPER.EXTERNAL_UPLOAD_ERROR",
300+
message=None,
294301
)
295302
self.log.warning(
296-
f"non-ok http response from upload URL: PUT {upload_url} returned"
297-
f" {upload_response.status}, retrying in {backoff} seconds"
303+
f"Uploading media to external URL {upload_url} failed with HTTP "
304+
f"{upload_response.status}, retrying in {backoff} seconds"
298305
)
299306
await asyncio.sleep(backoff)
300307
backoff *= 2

0 commit comments

Comments
 (0)