diff options
| author | Rin Toshaka <rinpatch@sdf.org> | 2018-12-30 16:51:16 +0100 | 
|---|---|---|
| committer | Rin Toshaka <rinpatch@sdf.org> | 2018-12-30 16:51:16 +0100 | 
| commit | d9f40b05b30dd735d0dc87f8268db842bf8ad1f0 (patch) | |
| tree | 4be9380d6151798d19f229153a750f83a7cb106b /lib | |
| parent | bce152aba000e9b59562bf95f3a6df8540686317 (diff) | |
| download | pleroma-d9f40b05b30dd735d0dc87f8268db842bf8ad1f0.tar.gz pleroma-d9f40b05b30dd735d0dc87f8268db842bf8ad1f0.zip | |
Added get_stripped_html_for_object. Renamed a few things
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 34 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/views/activity_view.ex | 5 | 
3 files changed, 32 insertions, 9 deletions
| diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index d4c169ad9..759bd62af 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -262,10 +262,13 @@ defmodule Pleroma.Web.CommonAPI.Utils do      end)    end +  def get_scrubbed_html_for_object(content, scrubber, activity) when is_atom(scrubber) do +    get_scrubbed_html_for_object(content, [scrubber], activity) +  end    @doc """    Get sanitized HTML from cache, or scrub it and save to cache.    """ -  def get_scrubbed_html( +  def get_scrubbed_html_for_object(          content,          scrubbers,          %{data: %{"object" => object}} = activity @@ -281,7 +284,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do      {new_scrubber_cache, scrubbed_html} =        Enum.map_reduce(scrubber_cache, nil, fn -        entry, _content -> +        entry, content ->            if Map.keys(entry["scrubbers"]) == Map.keys(signature) do              if entry["scrubbers"] == signature do                {entry, entry["content"]} @@ -289,6 +292,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do                # Remove the entry if scrubber version is outdated                {nil, nil}              end +          else +            {entry, content}            end        end) @@ -297,15 +302,30 @@ defmodule Pleroma.Web.CommonAPI.Utils do      if scrubbed_html == nil or new_scrubber_cache != scrubber_cache do        scrubbed_html = HTML.filter_tags(content, scrubbers) -      new_scrubber_cache = [%{:scrubbers => signature, :content => scrubbed_html} | new_scrubber_cache] + +      new_scrubber_cache = [ +        %{:scrubbers => signature, :content => scrubbed_html} | new_scrubber_cache +      ] +        update_scrubber_cache(activity, new_scrubber_cache) +      scrubbed_html +    else +      scrubbed_html      end -    scrubbed_html    end    defp generate_scrubber_signature(scrubbers) do      Enum.reduce(scrubbers, %{}, fn scrubber, signature -> -      Map.put(signature, to_string(scrubber), scrubber.version) +      Map.put( +        signature, +        to_string(scrubber), +        # If a scrubber does not have a version(e.g HtmlSanitizeEx.Scrubber) it is assumed it is always 0) +        if Kernel.function_exported?(scrubber, :version, 0) do +          scrubber.version +        else +          0 +        end +      )      end)    end @@ -317,4 +337,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do      {:ok, _struct} = Repo.update(cng)    end + +  def get_stripped_html_for_object(content, activity) do +    get_scrubbed_html_for_object(content, [HtmlSanitizeEx.Scrubber.StripTags], activity) +  end  end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 8fa3798a6..05ed602d5 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -120,7 +120,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      content =        object        |> render_content() -      |> Utils.get_scrubbed_html(User.html_filter_policy(opts[:for]), activity) +      |> Utils.get_scrubbed_html_for_object(User.html_filter_policy(opts[:for]), activity)      %{        id: to_string(activity.id), diff --git a/lib/pleroma/web/twitter_api/views/activity_view.ex b/lib/pleroma/web/twitter_api/views/activity_view.ex index adac1dfe9..7d0dea8c2 100644 --- a/lib/pleroma/web/twitter_api/views/activity_view.ex +++ b/lib/pleroma/web/twitter_api/views/activity_view.ex @@ -15,7 +15,6 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do    alias Pleroma.User    alias Pleroma.Repo    alias Pleroma.Formatter -  alias Pleroma.HTML    import Ecto.Query    require Logger @@ -245,14 +244,14 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do      html =        content -      |> Utils.get_scrubbed_html(User.html_filter_policy(opts[:for]), activity) +      |> Utils.get_scrubbed_html_for_object(User.html_filter_policy(opts[:for]), activity)        |> Formatter.emojify(object["emoji"])      text =        if content do          content          |> String.replace(~r/<br\s?\/?>/, "\n") -        |> HTML.strip_tags() +        |> Utils.get_stripped_html_for_object(activity)        end      reply_parent = Activity.get_in_reply_to_activity(activity) | 
