Merge branch 'following-relationships-optimizations' into 'develop'
[akkoma] / lib / pleroma / web / metadata.ex
index ddc74fb0d191e3df23ec24b9f58be1c348d6f82c..a9f70c43e32259b23b732eb5dc16c0124a17c00e 100644 (file)
@@ -1,35 +1,17 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Web.Metadata do
   alias Phoenix.HTML
 
-  @providers Pleroma.Config.get([__MODULE__, :providers], [])
-  def get_cached_tags(%{activity: activity, user: user} = params) do
-    # We don't need to use the both activity and a user since the object can't change it's content
-    key = "#{:erlang.term_to_binary(user)}#{activity.data["id"]}"
-
-    Cachex.fetch!(:metadata_cache, key, fn _key ->
-      {:commit, build_tags(params)}
-    end)
-  end
-
-  def get_cached_tags(%{user: user} = params) do
-    # I am unsure how well ETS works with big keys
-    key = :erlang.term_to_binary(user)
-
-    Cachex.fetch!(:metadata_cache, key, fn _key ->
-      {:commit, build_tags(params)}
-    end)
-  end
-
-  def get_cached_tags(params) do
-    key = :erlang.term_to_binary(params)
-
-    Cachex.fetch!(:metadata_cache, key, fn _key ->
-      {:commit, build_tags(params)}
-    end)
-  end
-
   def build_tags(params) do
-    Enum.reduce(@providers, "", fn parser, acc ->
+    providers = [
+      Pleroma.Web.Metadata.Providers.RestrictIndexing
+      | Pleroma.Config.get([__MODULE__, :providers], [])
+    ]
+
+    Enum.reduce(providers, "", fn parser, acc ->
       rendered_html =
         params
         |> parser.build_tags()
@@ -52,4 +34,12 @@ defmodule Pleroma.Web.Metadata do
         raise ArgumentError, message: "make_tag invalid args"
     end
   end
+
+  def activity_nsfw?(%{data: %{"sensitive" => sensitive}}) do
+    Pleroma.Config.get([__MODULE__, :unfurl_nsfw], false) == false and sensitive
+  end
+
+  def activity_nsfw?(_) do
+    false
+  end
 end