Merge branch 'metadata/parsing-empty' into 'develop'

Fix Metadata providers when parsing objects with no content or summary

See merge request pleroma/pleroma!4188
This commit is contained in:
feld 2024-07-21 04:33:34 +00:00
commit 058f8acb58
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)