@@ -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