Merge branch 'issue/1150' into 'develop'
[#1150] fixed parser TwitterCard See merge request pleroma/pleroma!1537
This commit is contained in:
commit
dea3bd02ce
5 changed files with 763 additions and 7 deletions
|
@ -3,13 +3,20 @@
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do
|
defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do
|
||||||
|
alias Pleroma.Web.RichMedia.Parsers.MetaTagsParser
|
||||||
|
|
||||||
|
@spec parse(String.t(), map()) :: {:ok, map()} | {:error, String.t()}
|
||||||
def parse(html, data) do
|
def parse(html, data) do
|
||||||
Pleroma.Web.RichMedia.Parsers.MetaTagsParser.parse(
|
data
|
||||||
html,
|
|> parse_name_attrs(html)
|
||||||
data,
|
|> parse_property_attrs(html)
|
||||||
"twitter",
|
end
|
||||||
"No twitter card metadata found",
|
|
||||||
"name"
|
defp parse_name_attrs(data, html) do
|
||||||
)
|
MetaTagsParser.parse(html, data, "twitter", %{}, "name")
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_property_attrs({_, data}, html) do
|
||||||
|
MetaTagsParser.parse(html, data, "twitter", "No twitter card metadata found", "property")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
227
test/fixtures/nypd-facial-recognition-children-teenagers.html
vendored
Normal file
227
test/fixtures/nypd-facial-recognition-children-teenagers.html
vendored
Normal file
File diff suppressed because one or more lines are too long
226
test/fixtures/nypd-facial-recognition-children-teenagers2.html
vendored
Normal file
226
test/fixtures/nypd-facial-recognition-children-teenagers2.html
vendored
Normal file
File diff suppressed because one or more lines are too long
227
test/fixtures/nypd-facial-recognition-children-teenagers3.html
vendored
Normal file
227
test/fixtures/nypd-facial-recognition-children-teenagers3.html
vendored
Normal file
File diff suppressed because one or more lines are too long
69
test/web/rich_media/parsers/twitter_card_test.exs
Normal file
69
test/web/rich_media/parsers/twitter_card_test.exs
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
|
use ExUnit.Case, async: true
|
||||||
|
alias Pleroma.Web.RichMedia.Parsers.TwitterCard
|
||||||
|
|
||||||
|
test "returns error when html not contains twitter card" do
|
||||||
|
assert TwitterCard.parse("", %{}) == {:error, "No twitter card metadata found"}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "parses twitter card with only name attributes" do
|
||||||
|
html = File.read!("test/fixtures/nypd-facial-recognition-children-teenagers3.html")
|
||||||
|
|
||||||
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
|
{:ok,
|
||||||
|
%{
|
||||||
|
"app:id:googleplay": "com.nytimes.android",
|
||||||
|
"app:name:googleplay": "NYTimes",
|
||||||
|
"app:url:googleplay": "nytimes://reader/id/100000006583622",
|
||||||
|
site: nil,
|
||||||
|
title:
|
||||||
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times"
|
||||||
|
}}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "parses twitter card with only property attributes" do
|
||||||
|
html = File.read!("test/fixtures/nypd-facial-recognition-children-teenagers2.html")
|
||||||
|
|
||||||
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
|
{:ok,
|
||||||
|
%{
|
||||||
|
card: "summary_large_image",
|
||||||
|
description:
|
||||||
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
||||||
|
image:
|
||||||
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
|
||||||
|
"image:alt": "",
|
||||||
|
title:
|
||||||
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
||||||
|
url:
|
||||||
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
|
||||||
|
}}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "parses twitter card with name & property attributes" do
|
||||||
|
html = File.read!("test/fixtures/nypd-facial-recognition-children-teenagers.html")
|
||||||
|
|
||||||
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
|
{:ok,
|
||||||
|
%{
|
||||||
|
"app:id:googleplay": "com.nytimes.android",
|
||||||
|
"app:name:googleplay": "NYTimes",
|
||||||
|
"app:url:googleplay": "nytimes://reader/id/100000006583622",
|
||||||
|
card: "summary_large_image",
|
||||||
|
description:
|
||||||
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
||||||
|
image:
|
||||||
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
|
||||||
|
"image:alt": "",
|
||||||
|
site: nil,
|
||||||
|
title:
|
||||||
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
||||||
|
url:
|
||||||
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
|
||||||
|
}}
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue