Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Fix crash in url preview #1701

Merged
merged 1 commit into from
Dec 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion synapse/rest/media/v1/preview_url_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,10 @@ def _calc_og(tree, media_uri):
if 'og:title' not in og:
# do some basic spidering of the HTML
title = tree.xpath("(//title)[1] | (//h1)[1] | (//h2)[1] | (//h3)[1]")
og['og:title'] = title[0].text.strip() if title else None
if title and title[0].text is not None:
og['og:title'] = title[0].text.strip()
else:
og['og:title'] = None

if 'og:image' not in og:
# TODO: extract a favicon failing all else
Expand Down
50 changes: 50 additions & 0 deletions tests/test_preview.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,3 +215,53 @@ def test_script(self):
u"og:title": u"Foo",
u"og:description": u"Some text."
})

def test_missing_title(self):
html = u"""
<html>
<body>
Some text.
</body>
</html>
"""

og = decode_and_calc_og(html, "http://example.com/test.html")

self.assertEquals(og, {
u"og:title": None,
u"og:description": u"Some text."
})

def test_h1_as_title(self):
html = u"""
<html>
<meta property="og:description" content="Some text."/>
<body>
<h1>Title</h1>
</body>
</html>
"""

og = decode_and_calc_og(html, "http://example.com/test.html")

self.assertEquals(og, {
u"og:title": u"Title",
u"og:description": u"Some text."
})

def test_missing_title_and_broken_h1(self):
html = u"""
<html>
<body>
<h1><a href="foo"/></h1>
Some text.
</body>
</html>
"""

og = decode_and_calc_og(html, "http://example.com/test.html")

self.assertEquals(og, {
u"og:title": None,
u"og:description": u"Some text."
})