diff options
| author | rinpatch <rinpatch@sdf.org> | 2020-02-16 01:55:26 +0300 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2020-02-16 01:55:26 +0300 | 
| commit | 472132215e871306ca69f2bab1ed884b0f65e7c2 (patch) | |
| tree | f3ce1bd91c44686dc1754d28117ded2b7b2a0a2b /lib | |
| parent | 0b5a2bbe5b08d8b02c2b72c7b80fb55a7dc12535 (diff) | |
| download | pleroma-472132215e871306ca69f2bab1ed884b0f65e7c2.tar.gz pleroma-472132215e871306ca69f2bab1ed884b0f65e7c2.zip | |
Use floki's new APIs for parsing fragments
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/html.ex | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/metadata/rel_me.ex | 6 | ||||
| -rw-r--r-- | lib/pleroma/web/rel_me.ex | 5 | ||||
| -rw-r--r-- | lib/pleroma/web/rich_media/parser.ex | 6 | 
5 files changed, 12 insertions, 7 deletions
| diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 11513106e..05946aa96 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -108,6 +108,7 @@ defmodule Pleroma.HTML do      Cachex.fetch!(:scrubber_cache, key, fn _key ->        result =          content +        |> Floki.parse_fragment!()          |> Floki.filter_out("a.mention,a.hashtag,a[rel~=\"tag\"]")          |> Floki.attribute("a", "href")          |> Enum.at(0) diff --git a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex index 8abe18e29..802d10edc 100644 --- a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do    # does the post contain links?    defp contains_links?(%{"content" => content} = _object) do      content +    |> Floki.parse_fragment!()      |> Floki.filter_out("a.mention,a.hashtag,a[rel~=\"tag\"],a.zrl")      |> Floki.attribute("a", "href")      |> length() > 0 diff --git a/lib/pleroma/web/metadata/rel_me.ex b/lib/pleroma/web/metadata/rel_me.ex index f87fc1973..86dcc1a3b 100644 --- a/lib/pleroma/web/metadata/rel_me.ex +++ b/lib/pleroma/web/metadata/rel_me.ex @@ -8,8 +8,10 @@ defmodule Pleroma.Web.Metadata.Providers.RelMe do    @impl Provider    def build_tags(%{user: user}) do -    (Floki.attribute(user.bio, "link[rel~=me]", "href") ++ -       Floki.attribute(user.bio, "a[rel~=me]", "href")) +    bio_tree = Floki.parse_fragment!(user.bio) + +    (Floki.attribute(bio_tree, "link[rel~=me]", "href") ++ +       Floki.attribute(bio_tree, "a[rel~=me]", "href"))      |> Enum.map(fn link ->        {:link, [rel: "me", href: link], []}      end) diff --git a/lib/pleroma/web/rel_me.ex b/lib/pleroma/web/rel_me.ex index 16b1a53d2..540fa65df 100644 --- a/lib/pleroma/web/rel_me.ex +++ b/lib/pleroma/web/rel_me.ex @@ -27,9 +27,10 @@ defmodule Pleroma.Web.RelMe do    defp parse_url(url) do      with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <-             Pleroma.HTTP.get(url, [], adapter: @hackney_options), +         {:ok, html_tree} <- Floki.parse_document(html),           data <- -           Floki.attribute(html, "link[rel~=me]", "href") ++ -             Floki.attribute(html, "a[rel~=me]", "href") do +           Floki.attribute(html_tree, "link[rel~=me]", "href") ++ +             Floki.attribute(html_tree, "a[rel~=me]", "href") do        {:ok, data}      end    rescue diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index c06b0a0f2..9702e90f1 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -81,18 +81,18 @@ defmodule Pleroma.Web.RichMedia.Parser do        {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: @hackney_options)        html -      |> parse_html +      |> parse_html()        |> maybe_parse()        |> Map.put(:url, url)        |> clean_parsed_data()        |> check_parsed_data()      rescue        e -> -        {:error, "Parsing error: #{inspect(e)}"} +        {:error, "Parsing error: #{inspect(e)} #{inspect(__STACKTRACE__)}"}      end    end -  defp parse_html(html), do: Floki.parse(html) +  defp parse_html(html), do: Floki.parse_document!(html)    defp maybe_parse(html) do      Enum.reduce_while(parsers(), %{}, fn parser, acc -> | 
