aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-09-07 10:19:19 +0000
committerrinpatch <rinpatch@sdf.org>2020-09-08 13:56:42 +0300
commit9b85592b8bb5b61de6a67d087beecbb651ffb397 (patch)
tree3ae0e0e37afd4ad3ebd9e40204bc73e21baa3881 /lib
parent4306050da977f34fde43694b376f4334a2ced2e8 (diff)
downloadpleroma-9b85592b8bb5b61de6a67d087beecbb651ffb397.tar.gz
Merge branch 'fix/rich-media-fake-statuses' into 'develop'
Rich Media: Do not cache URLs for preview statuses Closes #1987 See merge request pleroma/pleroma!2956
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/html.ex34
-rw-r--r--lib/pleroma/web/rich_media/helpers.ex2
2 files changed, 21 insertions, 15 deletions
diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex
index 20b02f091..43e9145be 100644
--- a/lib/pleroma/html.ex
+++ b/lib/pleroma/html.ex
@@ -100,21 +100,27 @@ defmodule Pleroma.HTML do
end)
end
- def extract_first_external_url(_, nil), do: {:error, "No content"}
+ def extract_first_external_url_from_object(%{data: %{"content" => content}} = object)
+ when is_binary(content) do
+ unless object.data["fake"] do
+ key = "URL|#{object.id}"
+
+ Cachex.fetch!(:scrubber_cache, key, fn _key ->
+ {:commit, {:ok, extract_first_external_url(content)}}
+ end)
+ else
+ {:ok, extract_first_external_url(content)}
+ end
+ end
- def extract_first_external_url(object, content) do
- key = "URL|#{object.id}"
+ def extract_first_external_url_from_object(_), do: {:error, :no_content}
- Cachex.fetch!(:scrubber_cache, key, fn _key ->
- result =
- content
- |> Floki.parse_fragment!()
- |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])")
- |> Enum.take(1)
- |> Floki.attribute("href")
- |> Enum.at(0)
-
- {:commit, {:ok, result}}
- end)
+ def extract_first_external_url(content) do
+ content
+ |> Floki.parse_fragment!()
+ |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])")
+ |> Enum.take(1)
+ |> Floki.attribute("href")
+ |> Enum.at(0)
end
end
diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex
index 2fb482b51..752ca9f81 100644
--- a/lib/pleroma/web/rich_media/helpers.ex
+++ b/lib/pleroma/web/rich_media/helpers.ex
@@ -58,7 +58,7 @@ defmodule Pleroma.Web.RichMedia.Helpers do
with true <- Config.get([:rich_media, :enabled]),
false <- object.data["sensitive"] || false,
{:ok, page_url} <-
- HTML.extract_first_external_url(object, object.data["content"]),
+ HTML.extract_first_external_url_from_object(object),
:ok <- validate_page_url(page_url),
{:ok, rich_media} <- Parser.parse(page_url) do
%{page_url: page_url, rich_media: rich_media}