diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/rich_media/parser/card.ex | 2 | ||||
-rw-r--r-- | lib/pleroma/web/rich_media/parser/meta_tags.ex | 9 | ||||
-rw-r--r-- | lib/pleroma/web/rich_media/parsers/twitter_card.ex | 3 |
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 |