aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/rich_media/parser/card.ex2
-rw-r--r--lib/pleroma/web/rich_media/parser/meta_tags.ex9
-rw-r--r--lib/pleroma/web/rich_media/parsers/twitter_card.ex3
3 files changed, 12 insertions, 2 deletions
diff --git a/lib/pleroma/web/rich_media/parser/card.ex b/lib/pleroma/web/rich_media/parser/card.ex
index 2e06aa562..1eb3ddbdd 100644
--- a/lib/pleroma/web/rich_media/parser/card.ex
+++ b/lib/pleroma/web/rich_media/parser/card.ex
@@ -103,7 +103,7 @@ defmodule Pleroma.Web.RichMedia.Parser.Card do
def validate(%Embed{} = embed) do
case Card.parse(embed) do
- %Card{} = card -> validate(card)
+ {:ok, %Card{} = card} -> validate(card)
card -> {:error, {:invalid_metadata, card}}
end
end
diff --git a/lib/pleroma/web/rich_media/parser/meta_tags.ex b/lib/pleroma/web/rich_media/parser/meta_tags.ex
index e5c6b448d..ea544b110 100644
--- a/lib/pleroma/web/rich_media/parser/meta_tags.ex
+++ b/lib/pleroma/web/rich_media/parser/meta_tags.ex
@@ -16,6 +16,7 @@ defmodule Pleroma.Web.RichMedia.Parser.MetaTags do
_ -> acc
end
end)
+ |> clean_data()
end
defp parse_node({_tag, attrs, _children}) when is_list(attrs) do
@@ -27,4 +28,12 @@ defmodule Pleroma.Web.RichMedia.Parser.MetaTags do
end
defp parse_node(_), do: {:error, :invalid_meta_tag}
+
+ defp clean_data(data) do
+ data
+ |> Enum.reject(fn {key, val} ->
+ not match?({:ok, _}, Jason.encode(%{key => val}))
+ end)
+ |> Map.new()
+ end
end
diff --git a/lib/pleroma/web/rich_media/parsers/twitter_card.ex b/lib/pleroma/web/rich_media/parsers/twitter_card.ex
index a892d16ea..4785ac6df 100644
--- a/lib/pleroma/web/rich_media/parsers/twitter_card.ex
+++ b/lib/pleroma/web/rich_media/parsers/twitter_card.ex
@@ -14,7 +14,8 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do
def get_page_title(html) do
with [node | _] <- Floki.find(html, "html head title"),
- title when is_binary(title) and title != "" <- Floki.text(node) do
+ title when is_binary(title) and title != "" <- Floki.text(node),
+ true <- String.valid?(title) do
title
else
_ -> nil