diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/rich_media/parser.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex | 25 | ||||
| -rw-r--r-- | lib/pleroma/web/rich_media/parsers/oembed_parser.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/rich_media/parsers/ogp.ex | 11 | ||||
| -rw-r--r-- | lib/pleroma/web/rich_media/parsers/twitter_card.ex | 15 | 
5 files changed, 20 insertions, 39 deletions
| diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index d9b5068b1..ef5ead2da 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -105,8 +105,8 @@ defmodule Pleroma.Web.RichMedia.Parser do    defp maybe_parse(html) do      Enum.reduce_while(parsers(), %{}, fn parser, acc ->        case parser.parse(html, acc) do -        {:ok, data} -> {:halt, data} -        {:error, _msg} -> {:cont, acc} +        data when data != %{} -> {:halt, data} +        _ -> {:cont, acc}        end      end)    end diff --git a/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex b/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex index 2762b5902..3d577e254 100644 --- a/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex +++ b/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex @@ -3,22 +3,15 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser do -  def parse(html, data, prefix, error_message, key_name, value_name \\ "content") do -    meta_data = -      html -      |> get_elements(key_name, prefix) -      |> Enum.reduce(data, fn el, acc -> -        attributes = normalize_attributes(el, prefix, key_name, value_name) - -        Map.merge(acc, attributes) -      end) -      |> maybe_put_title(html) - -    if Enum.empty?(meta_data) do -      {:error, error_message} -    else -      {:ok, meta_data} -    end +  def parse(data, html, prefix, key_name, value_name \\ "content") do +    html +    |> get_elements(key_name, prefix) +    |> Enum.reduce(data, fn el, acc -> +      attributes = normalize_attributes(el, prefix, key_name, value_name) + +      Map.merge(acc, attributes) +    end) +    |> maybe_put_title(html)    end    defp get_elements(html, key_name, prefix) do diff --git a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex b/lib/pleroma/web/rich_media/parsers/oembed_parser.ex index db8ccf15d..6bdeac89c 100644 --- a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex +++ b/lib/pleroma/web/rich_media/parsers/oembed_parser.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do      with elements = [_ | _] <- get_discovery_data(html),           oembed_url when is_binary(oembed_url) <- get_oembed_url(elements),           {:ok, oembed_data} <- get_oembed_data(oembed_url) do -      {:ok, oembed_data} +      oembed_data      else -      _e -> {:error, "No OEmbed data found"} +      _e -> %{}      end    end diff --git a/lib/pleroma/web/rich_media/parsers/ogp.ex b/lib/pleroma/web/rich_media/parsers/ogp.ex index 3e9012588..b3b3b059c 100644 --- a/lib/pleroma/web/rich_media/parsers/ogp.ex +++ b/lib/pleroma/web/rich_media/parsers/ogp.ex @@ -3,13 +3,8 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.RichMedia.Parsers.OGP do -  def parse(html, data) do -    Pleroma.Web.RichMedia.Parsers.MetaTagsParser.parse( -      html, -      data, -      "og", -      "No OGP metadata found", -      "property" -    ) +  @deprecated "OGP parser is deprecated. Use TwitterCard instead." +  def parse(_html, _data) do +    %{}    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 09d4b526e..4a04865d2 100644 --- a/lib/pleroma/web/rich_media/parsers/twitter_card.ex +++ b/lib/pleroma/web/rich_media/parsers/twitter_card.ex @@ -5,18 +5,11 @@  defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do    alias Pleroma.Web.RichMedia.Parsers.MetaTagsParser -  @spec parse(String.t(), map()) :: {:ok, map()} | {:error, String.t()} +  @spec parse(list(), map()) :: map()    def parse(html, data) do      data -    |> parse_name_attrs(html) -    |> parse_property_attrs(html) -  end - -  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") +    |> MetaTagsParser.parse(html, "og", "property") +    |> MetaTagsParser.parse(html, "twitter", "name") +    |> MetaTagsParser.parse(html, "twitter", "property")    end  end | 
