mirror of
https://github.com/matrix-org/pantalaimon.git
synced 2025-03-12 01:06:41 -04:00
store filename in upload info
This commit is contained in:
parent
33e938b095
commit
5dd4c50c2a
@ -829,7 +829,7 @@ class ProxyDaemon:
|
|||||||
body=await response.read(),
|
body=await response.read(),
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_upload_and_media_info(self, content_key, content, request):
|
def _get_upload_and_media_info(self, content_key, content):
|
||||||
content_uri = content[content_key]
|
content_uri = content[content_key]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -852,17 +852,15 @@ class ProxyDaemon:
|
|||||||
|
|
||||||
self.media_info[(mxc_server, mxc_path)] = media_info
|
self.media_info[(mxc_server, mxc_path)] = media_info
|
||||||
|
|
||||||
file_name = request.match_info.get("file_name")
|
return upload_info, media_info
|
||||||
|
|
||||||
return upload_info, media_info, file_name
|
|
||||||
|
|
||||||
async def _map_decrypted_uri(self, content_key, content, request, client):
|
async def _map_decrypted_uri(self, content_key, content, request, client):
|
||||||
try:
|
try:
|
||||||
upload_info, media_info, file_name = self._get_upload_and_media_info(content_key, content, request)
|
upload_info, media_info = self._get_upload_and_media_info(content_key, content)
|
||||||
if not upload_info or not media_info:
|
if not upload_info or not media_info:
|
||||||
return await self.forward_to_web(request, token=client.access_token)
|
return await self.forward_to_web(request, token=client.access_token)
|
||||||
|
|
||||||
response, decrypted_file = await self._load_decrypted_file(media_info.mcx_server, media_info.mxc_path, file_name)
|
response, decrypted_file = await self._load_decrypted_file(media_info.mcx_server, media_info.mxc_path, upload_info.filename)
|
||||||
|
|
||||||
if response is None and decrypted_file is None:
|
if response is None and decrypted_file is None:
|
||||||
return await self.forward_to_web(request, token=client.access_token)
|
return await self.forward_to_web(request, token=client.access_token)
|
||||||
@ -877,7 +875,7 @@ class ProxyDaemon:
|
|||||||
decrypted_upload, _ = await client.upload(
|
decrypted_upload, _ = await client.upload(
|
||||||
data_provider=BufferedReader(BytesIO(decrypted_file)),
|
data_provider=BufferedReader(BytesIO(decrypted_file)),
|
||||||
content_type=response.content_type,
|
content_type=response.content_type,
|
||||||
filename=file_name,
|
filename=upload_info.filename,
|
||||||
encrypt=False,
|
encrypt=False,
|
||||||
filesize=len(decrypted_file),
|
filesize=len(decrypted_file),
|
||||||
)
|
)
|
||||||
@ -939,7 +937,7 @@ class ProxyDaemon:
|
|||||||
try:
|
try:
|
||||||
content_msgtype = content["msgtype"]
|
content_msgtype = content["msgtype"]
|
||||||
if content_msgtype in ["m.image", "m.video", "m.audio", "m.file"] or msgtype == "m.room.avatar":
|
if content_msgtype in ["m.image", "m.video", "m.audio", "m.file"] or msgtype == "m.room.avatar":
|
||||||
upload_info, media_info, file_name = self._get_upload_and_media_info("url", content, request)
|
upload_info, media_info = self._get_upload_and_media_info("url", content)
|
||||||
if not upload_info or not media_info:
|
if not upload_info or not media_info:
|
||||||
response = await client.room_send(
|
response = await client.room_send(
|
||||||
room_id, msgtype, content, txnid, ignore_unverified
|
room_id, msgtype, content, txnid, ignore_unverified
|
||||||
@ -953,7 +951,7 @@ class ProxyDaemon:
|
|||||||
)
|
)
|
||||||
|
|
||||||
media_content = media_info.to_content(content["url"],
|
media_content = media_info.to_content(content["url"],
|
||||||
file_name,
|
upload_info.filename,
|
||||||
content_msgtype,
|
content_msgtype,
|
||||||
upload_info.mimetype
|
upload_info.mimetype
|
||||||
),
|
),
|
||||||
|
@ -69,6 +69,7 @@ class MediaInfo:
|
|||||||
@attr.s
|
@attr.s
|
||||||
class UploadInfo:
|
class UploadInfo:
|
||||||
content_uri = attr.ib(type=str)
|
content_uri = attr.ib(type=str)
|
||||||
|
filename = attr.ib(type=str)
|
||||||
mimetype = attr.ib(type=str)
|
mimetype = attr.ib(type=str)
|
||||||
|
|
||||||
|
|
||||||
@ -142,6 +143,7 @@ class PanUploadInfo(Model):
|
|||||||
model=Servers, column_name="server_id", backref="upload", on_delete="CASCADE"
|
model=Servers, column_name="server_id", backref="upload", on_delete="CASCADE"
|
||||||
)
|
)
|
||||||
content_uri = TextField()
|
content_uri = TextField()
|
||||||
|
filename = TextField()
|
||||||
mimetype = TextField()
|
mimetype = TextField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -219,7 +221,7 @@ class PanStore:
|
|||||||
if i > MAX_LOADED_UPLOAD:
|
if i > MAX_LOADED_UPLOAD:
|
||||||
break
|
break
|
||||||
|
|
||||||
upload = UploadInfo(u.content_uri, u.mimetype)
|
upload = UploadInfo(u.content_uri, u.filename, u.mimetype)
|
||||||
upload_cache[u.content_uri] = upload
|
upload_cache[u.content_uri] = upload
|
||||||
|
|
||||||
return upload_cache
|
return upload_cache
|
||||||
@ -232,7 +234,7 @@ class PanStore:
|
|||||||
if not u:
|
if not u:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return UploadInfo(u.content_uri, u.mimetype)
|
return UploadInfo(u.content_uri, u.filename, u.mimetype)
|
||||||
|
|
||||||
@use_database
|
@use_database
|
||||||
def save_media(self, server, media):
|
def save_media(self, server, media):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user