diff --git a/synapse/rest/media/v1/thumbnail_resource.py b/synapse/rest/media/v1/thumbnail_resource.py
index ab52499785..513b445688 100644
--- a/synapse/rest/media/v1/thumbnail_resource.py
+++ b/synapse/rest/media/v1/thumbnail_resource.py
@@ -72,6 +72,11 @@ class ThumbnailResource(BaseMediaResource):
self._respond_404(request)
return
+ if media_info["media_type"] == "image/svg+xml":
+ file_path = self.filepaths.local_media_filepath(media_id)
+ yield self._respond_with_file(request, media_info["media_type"], file_path)
+ return
+
thumbnail_infos = yield self.store.get_local_media_thumbnails(media_id)
if thumbnail_infos:
@@ -103,6 +108,11 @@ class ThumbnailResource(BaseMediaResource):
self._respond_404(request)
return
+ if media_info["media_type"] == "image/svg+xml":
+ file_path = self.filepaths.local_media_filepath(media_id)
+ yield self._respond_with_file(request, media_info["media_type"], file_path)
+ return
+
thumbnail_infos = yield self.store.get_local_media_thumbnails(media_id)
for info in thumbnail_infos:
t_w = info["thumbnail_width"] == desired_width
@@ -138,6 +148,11 @@ class ThumbnailResource(BaseMediaResource):
desired_method, desired_type):
media_info = yield self._get_remote_media(server_name, media_id)
+ if media_info["media_type"] == "image/svg+xml":
+ file_path = self.filepaths.remote_media_filepath(server_name, media_id)
+ yield self._respond_with_file(request, media_info["media_type"], file_path)
+ return
+
thumbnail_infos = yield self.store.get_remote_media_thumbnails(
server_name, media_id,
)
@@ -181,6 +196,11 @@ class ThumbnailResource(BaseMediaResource):
# We should proxy the thumbnail from the remote server instead.
media_info = yield self._get_remote_media(server_name, media_id)
+ if media_info["media_type"] == "image/svg+xml":
+ file_path = self.filepaths.remote_media_filepath(server_name, media_id)
+ yield self._respond_with_file(request, media_info["media_type"], file_path)
+ return
+
thumbnail_infos = yield self.store.get_remote_media_thumbnails(
server_name, media_id,
)
@@ -208,6 +228,8 @@ class ThumbnailResource(BaseMediaResource):
@defer.inlineCallbacks
def _respond_default_thumbnail(self, request, media_info, width, height,
method, m_type):
+ # XXX: how is this meant to work? store.get_default_thumbnails
+ # appears to always return [] so won't this always 404?
media_type = media_info["media_type"]
top_level_type = media_type.split("/")[0]
sub_type = media_type.split("/")[-1].split(";")[0]
|