diff options
author | Erik Johnston <erikj@jki.re> | 2016-06-16 10:08:29 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-16 10:08:29 +0100 |
commit | 1f313816114e968620827aaa11c418d72b8a1f62 (patch) | |
tree | d965bdb03c84fdf9cda85645a5b9b49d4e6eb6db | |
parent | Merge pull request #867 from matrix-org/markjh/enable_jenkins_synchrotron (diff) | |
parent | Line lengths (diff) | |
download | synapse-1f313816114e968620827aaa11c418d72b8a1f62.tar.xz |
Merge pull request #872 from matrix-org/erikj/preview_url_fixes
Fix some `/preview_url` explosions
-rw-r--r-- | synapse/rest/media/v1/preview_url_resource.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/synapse/rest/media/v1/preview_url_resource.py b/synapse/rest/media/v1/preview_url_resource.py index 37dd1de899..74c64f1371 100644 --- a/synapse/rest/media/v1/preview_url_resource.py +++ b/synapse/rest/media/v1/preview_url_resource.py @@ -252,7 +252,8 @@ class PreviewUrlResource(Resource): og = {} for tag in tree.xpath("//*/meta[starts-with(@property, 'og:')]"): - og[tag.attrib['property']] = tag.attrib['content'] + if 'content' in tag.attrib: + og[tag.attrib['property']] = tag.attrib['content'] # TODO: grab article: meta tags too, e.g.: @@ -279,7 +280,7 @@ class PreviewUrlResource(Resource): # TODO: consider inlined CSS styles as well as width & height attribs images = tree.xpath("//img[@src][number(@width)>10][number(@height)>10]") images = sorted(images, key=lambda i: ( - -1 * int(i.attrib['width']) * int(i.attrib['height']) + -1 * float(i.attrib['width']) * float(i.attrib['height']) )) if not images: images = tree.xpath("//img[@src]") @@ -287,9 +288,9 @@ class PreviewUrlResource(Resource): og['og:image'] = images[0].attrib['src'] # pre-cache the image for posterity - # FIXME: it might be cleaner to use the same flow as the main /preview_url request - # itself and benefit from the same caching etc. But for now we just rely on the - # caching on the master request to speed things up. + # FIXME: it might be cleaner to use the same flow as the main /preview_url + # request itself and benefit from the same caching etc. But for now we + # just rely on the caching on the master request to speed things up. if 'og:image' in og and og['og:image']: image_info = yield self._download_url( self._rebase_url(og['og:image'], media_info['uri']), requester.user |