aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/application.ex11
-rw-r--r--lib/pleroma/web/rich_media/parser.ex9
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index cb3e6b69b..ad2797209 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -66,6 +66,17 @@ defmodule Pleroma.Application do
worker(
Cachex,
[
+ :rich_media_cache,
+ [
+ default_ttl: :timer.minutes(120),
+ limit: 5000
+ ]
+ ],
+ id: :cachex_rich_media
+ ),
+ worker(
+ Cachex,
+ [
:scrubber_cache,
[
limit: 2500
diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex
index 477a38196..3746feaf6 100644
--- a/lib/pleroma/web/rich_media/parser.ex
+++ b/lib/pleroma/web/rich_media/parser.ex
@@ -1,7 +1,14 @@
defmodule Pleroma.Web.RichMedia.Parser do
@parsers [Pleroma.Web.RichMedia.Parsers.OGP]
- def parse(url) do
+ if Mix.env() == :test do
+ def parse(url), do: parse_url(url)
+ else
+ def parse(url),
+ do: {:commit, Cachex.fetch!(:rich_media_cache, url, fn _ -> parse_url(url) end)}
+ end
+
+ defp parse_url(url) do
{:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url)
html |> maybe_parse() |> get_parsed_data()