Fix OpenGraph and Twitter metadata providers when parsing objects with no content or summary fields.

This commit is contained in:
Mark Felder 2024-07-20 23:48:54 -04:00
parent e4a6973e0b
commit fb654acfad
3 changed files with 27 additions and 7 deletions

View file

@ -0,0 +1 @@
Fix OpenGraph and Twitter metadata providers when parsing objects with no content or summary fields.

View file

@ -25,11 +25,14 @@ def scrub_html_and_truncate(%{data: %{"summary" => summary}} = object)
|> scrub_html_and_truncate_object_field(object)
end
def scrub_html_and_truncate(%{data: %{"content" => content}} = object) do
def scrub_html_and_truncate(%{data: %{"content" => content}} = object)
when is_binary(content) and content != "" do
content
|> scrub_html_and_truncate_object_field(object)
end
def scrub_html_and_truncate(%{}), do: ""
def scrub_html_and_truncate(content, max_length \\ 200, omission \\ "...")
when is_binary(content) do
content

View file

@ -8,7 +8,7 @@ defmodule Pleroma.Web.Metadata.UtilsTest do
alias Pleroma.Web.Metadata.Utils
describe "scrub_html_and_truncate/1" do
test "it returns content text without encode HTML if summary is nil" do
test "it returns content text without HTML if summary is nil" do
user = insert(:user)
note =
@ -17,14 +17,14 @@ test "it returns content text without encode HTML if summary is nil" do
"actor" => user.ap_id,
"id" => "https://pleroma.gov/objects/whatever",
"summary" => nil,
"content" => "Pleroma's really cool!"
"content" => "Pleroma's really cool!<br>"
}
})
assert Utils.scrub_html_and_truncate(note) == "Pleroma's really cool!"
end
test "it returns context text without encode HTML if summary is empty" do
test "it returns content text without HTML if summary is empty" do
user = insert(:user)
note =
@ -33,14 +33,14 @@ test "it returns context text without encode HTML if summary is empty" do
"actor" => user.ap_id,
"id" => "https://pleroma.gov/objects/whatever",
"summary" => "",
"content" => "Pleroma's really cool!"
"content" => "Pleroma's really cool!<br>"
}
})
assert Utils.scrub_html_and_truncate(note) == "Pleroma's really cool!"
end
test "it returns summary text without encode HTML if summary is filled" do
test "it returns summary text without HTML if summary is filled" do
user = insert(:user)
note =
@ -48,7 +48,7 @@ test "it returns summary text without encode HTML if summary is filled" do
data: %{
"actor" => user.ap_id,
"id" => "https://pleroma.gov/objects/whatever",
"summary" => "Public service announcement on caffeine consumption",
"summary" => "Public service announcement on caffeine consumption<br>",
"content" => "cofe"
}
})
@ -57,6 +57,22 @@ test "it returns summary text without encode HTML if summary is filled" do
"Public service announcement on caffeine consumption"
end
test "it returns empty string if summary and content are absent" do
user = insert(:user)
note =
insert(:note, %{
data: %{
"actor" => user.ap_id,
"id" => "https://pleroma.gov/objects/whatever",
"content" => nil,
"summary" => nil
}
})
assert Utils.scrub_html_and_truncate(note) == ""
end
test "it does not return old content after editing" do
user = insert(:user)