mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-31 07:14:42 -04:00
Split out BaseMediaResource into MediaRepository
This is so that a single MediaRepository can be shared across all resources, rather than having a "copy" per resource. In particular this allows us to guard against both the thumbnail and download resource triggering a download of remote content at the same time.
This commit is contained in:
parent
481119f7d6
commit
43f0941e8f
6 changed files with 180 additions and 138 deletions
|
@ -13,10 +13,9 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from .base_resource import BaseMediaResource
|
||||
|
||||
from twisted.web.server import NOT_DONE_YET
|
||||
from twisted.internet import defer
|
||||
from twisted.web.resource import Resource
|
||||
|
||||
from synapse.api.errors import (
|
||||
SynapseError, Codes,
|
||||
|
@ -41,11 +40,11 @@ import logging
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PreviewUrlResource(BaseMediaResource):
|
||||
class PreviewUrlResource(Resource):
|
||||
isLeaf = True
|
||||
|
||||
def __init__(self, hs, filepaths):
|
||||
BaseMediaResource.__init__(self, hs, filepaths)
|
||||
def __init__(self, hs, media_repo):
|
||||
Resource.__init__(self)
|
||||
self.client = SpiderHttpClient(hs)
|
||||
if hasattr(hs.config, "url_preview_url_blacklist"):
|
||||
self.url_preview_url_blacklist = hs.config.url_preview_url_blacklist
|
||||
|
@ -61,6 +60,13 @@ class PreviewUrlResource(BaseMediaResource):
|
|||
|
||||
self.downloads = {}
|
||||
|
||||
self.auth = hs.get_auth()
|
||||
self.clock = hs.get_clock()
|
||||
self.version_string = hs.version_string
|
||||
self.filepaths = media_repo.filepaths
|
||||
self.max_spider_size = hs.config.max_spider_size
|
||||
self.server_name = hs.hostname
|
||||
|
||||
def render_GET(self, request):
|
||||
self._async_render_GET(request)
|
||||
return NOT_DONE_YET
|
||||
|
@ -156,7 +162,7 @@ class PreviewUrlResource(BaseMediaResource):
|
|||
logger.debug("got media_info of '%s'" % media_info)
|
||||
|
||||
if self._is_media(media_info['media_type']):
|
||||
dims = yield self._generate_local_thumbnails(
|
||||
dims = yield self.media_repo._generate_local_thumbnails(
|
||||
media_info['filesystem_id'], media_info
|
||||
)
|
||||
|
||||
|
@ -291,7 +297,7 @@ class PreviewUrlResource(BaseMediaResource):
|
|||
|
||||
if self._is_media(image_info['media_type']):
|
||||
# TODO: make sure we don't choke on white-on-transparent images
|
||||
dims = yield self._generate_local_thumbnails(
|
||||
dims = yield self.media_repo._generate_local_thumbnails(
|
||||
image_info['filesystem_id'], image_info
|
||||
)
|
||||
if dims:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue