Move scrubber cache-related functions to Pleroma.HTML
authorRin Toshaka <rinpatch@sdf.org>
Mon, 31 Dec 2018 07:19:48 +0000 (08:19 +0100)
committerRin Toshaka <rinpatch@sdf.org>
Mon, 31 Dec 2018 07:19:48 +0000 (08:19 +0100)
lib/pleroma/html.ex
lib/pleroma/object.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
lib/pleroma/web/twitter_api/views/activity_view.ex

index 5e1f5bf96f469c002ca866ba087baaf97440f957..eb31f131eadfa6ba56ecac7f5573c6bed1e5e7ca 100644 (file)
@@ -27,6 +27,40 @@ defmodule Pleroma.HTML do
   def filter_tags(html, scrubber), do: Scrubber.scrub(html, scrubber)
   def filter_tags(html), do: filter_tags(html, nil)
   def strip_tags(html), do: Scrubber.scrub(html, Scrubber.StripTags)
+
+  def get_cached_scrubbed_html_for_object(content, scrubbers, object) do
+    key = "#{generate_scrubber_signature(scrubbers)}|#{object.id}"
+    Cachex.fetch!(:scrubber_cache, key, fn _key -> ensure_scrubbed_html(content, scrubbers) end)
+  end
+
+  def get_cached_stripped_html_for_object(content, object) do
+    get_cached_scrubbed_html_for_object(content, HtmlSanitizeEx.Scrubber.StripTags, object)
+  end
+
+  def ensure_scrubbed_html(
+        content,
+        scrubbers
+      ) do
+    {:commit, filter_tags(content, scrubbers)}
+  end
+
+  defp generate_scrubber_signature(scrubber) when is_atom(scrubber) do
+    generate_scrubber_signature([scrubber])
+  end
+
+  defp generate_scrubber_signature(scrubbers) do
+    Enum.reduce(scrubbers, "", fn scrubber, signature ->
+      # If a scrubber does not have a version(e.g HtmlSanitizeEx.Scrubber.StripTags) it is assumed it is always 0)
+      version =
+        if Kernel.function_exported?(scrubber, :version, 0) do
+          scrubber.version
+        else
+          0
+        end
+
+      "#{signature}#{to_string(scrubber)}#{version}"
+    end)
+  end
 end
 
 defmodule Pleroma.HTML.Scrubber.TwitterText do
index 9a6c256df724a08e1111a10219b43bc5db1ad7ca..5241f00aeef851ae9ffbb0ec3bbcb39b54182d8c 100644 (file)
@@ -4,7 +4,6 @@
 
 defmodule Pleroma.Object do
   use Ecto.Schema
-  alias Pleroma.{Repo, Object, User, Activity, HTML, ObjectTombstone}
   alias Pleroma.{Repo, Object, User, Activity, ObjectTombstone}
   import Ecto.{Query, Changeset}
 
@@ -92,37 +91,4 @@ defmodule Pleroma.Object do
     end
   end
 
-  def get_cached_scrubbed_html(content, scrubbers, object) do
-    key = "#{generate_scrubber_signature(scrubbers)}|#{object.id}"
-    Cachex.fetch!(:scrubber_cache, key, fn _key -> ensure_scrubbed_html(content, scrubbers) end)
-  end
-
-  def get_cached_stripped_html(content, object) do
-    get_cached_scrubbed_html(content, HtmlSanitizeEx.Scrubber.StripTags, object)
-  end
-
-  def ensure_scrubbed_html(
-        content,
-        scrubbers
-      ) do
-    {:commit, HTML.filter_tags(content, scrubbers)}
-  end
-
-  defp generate_scrubber_signature(scrubber) when is_atom(scrubber) do
-    generate_scrubber_signature([scrubber])
-  end
-
-  defp generate_scrubber_signature(scrubbers) do
-    Enum.reduce(scrubbers, "", fn scrubber, signature ->
-      # If a scrubber does not have a version(e.g HtmlSanitizeEx.Scrubber.StripTags) it is assumed it is always 0)
-      version =
-        if Kernel.function_exported?(scrubber, :version, 0) do
-          scrubber.version
-        else
-          0
-        end
-
-      "#{signature}#{to_string(scrubber)}#{version}"
-    end)
-  end
 end
index 8a57a233a71a509642ca5a87c1431789f3da997e..da61bbd862fefb1b367c4d95e52fb128770cd9b7 100644 (file)
@@ -9,7 +9,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
   alias Pleroma.HTML
   alias Pleroma.Repo
   alias Pleroma.User
-  alias Pleroma.Object
   alias Pleroma.Web.CommonAPI.Utils
   alias Pleroma.Web.MediaProxy
   alias Pleroma.Web.MastodonAPI.AccountView
@@ -121,7 +120,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
     content =
       object
       |> render_content()
-      |> Object.get_cached_scrubbed_html(User.html_filter_policy(opts[:for]), activity)
+      |> HTML.get_cached_scrubbed_html_for_object(User.html_filter_policy(opts[:for]), activity)
 
     %{
       id: to_string(activity.id),
index 4c29e03ce02e97de7b7e0c11a93d7846bb7e5471..469f780c7c9e80024237770221bce6cedd430274 100644 (file)
@@ -11,6 +11,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
   alias Pleroma.Web.TwitterAPI.TwitterAPI
   alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
   alias Pleroma.Activity
+  alias Pleroma.HTML
   alias Pleroma.Object
   alias Pleroma.User
   alias Pleroma.Repo
@@ -244,14 +245,14 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
 
     html =
       content
-      |> Object.get_cached_scrubbed_html(User.html_filter_policy(opts[:for]), activity)
+      |> HTML.get_cached_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")
-        |> Object.get_cached_stripped_html(activity)
+        |> HTML.get_cached_stripped_html_for_object(activity)
       end
 
     reply_parent = Activity.get_in_reply_to_activity(activity)