diff options
Diffstat (limited to 'lib/pleroma')
-rw-r--r-- | lib/pleroma/web/rich_media/backfill.ex | 4 | ||||
-rw-r--r-- | lib/pleroma/web/rich_media/parser/ttl.ex | 15 | ||||
-rw-r--r-- | lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex | 2 | ||||
-rw-r--r-- | lib/pleroma/web/rich_media/parser/ttl/opengraph.ex | 19 |
4 files changed, 30 insertions, 10 deletions
diff --git a/lib/pleroma/web/rich_media/backfill.ex b/lib/pleroma/web/rich_media/backfill.ex index 112028901..386e2023a 100644 --- a/lib/pleroma/web/rich_media/backfill.ex +++ b/lib/pleroma/web/rich_media/backfill.ex @@ -78,8 +78,8 @@ defmodule Pleroma.Web.RichMedia.Backfill do end defp maybe_schedule_expiration(url, fields) do - case TTL.get_from_image(fields, url) do - ttl when is_number(ttl) -> + case TTL.process(fields, url) do + {:ok, ttl} when is_number(ttl) -> timestamp = DateTime.from_unix!(ttl) RichMediaExpirationWorker.new(%{"url" => url}, scheduled_at: timestamp) diff --git a/lib/pleroma/web/rich_media/parser/ttl.ex b/lib/pleroma/web/rich_media/parser/ttl.ex index d69bb0d07..7e56375ff 100644 --- a/lib/pleroma/web/rich_media/parser/ttl.ex +++ b/lib/pleroma/web/rich_media/parser/ttl.ex @@ -5,15 +5,16 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL do @callback ttl(map(), String.t()) :: integer() | nil - def get_from_image(data, url) do + @spec process(map(), String.t()) :: {:ok, integer() | nil} + def process(data, url) do [:rich_media, :ttl_setters] |> Pleroma.Config.get() - |> Enum.reduce({:ok, nil}, fn - module, {:ok, _ttl} -> - module.ttl(data, url) - - _, error -> - error + |> Enum.reduce_while({:ok, nil}, fn + module, acc -> + case module.ttl(data, url) do + ttl when is_number(ttl) -> {:halt, {:ok, ttl}} + _ -> {:cont, acc} + end end) end end diff --git a/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex index 22e72e22e..d6bf50fa5 100644 --- a/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex +++ b/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl do |> format_query_params() |> get_expiration_timestamp() else - {:error, "Not aws signed url #{inspect(image)}"} + nil end end diff --git a/lib/pleroma/web/rich_media/parser/ttl/opengraph.ex b/lib/pleroma/web/rich_media/parser/ttl/opengraph.ex new file mode 100644 index 000000000..fc99244c3 --- /dev/null +++ b/lib/pleroma/web/rich_media/parser/ttl/opengraph.ex @@ -0,0 +1,19 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.Parser.TTL.Opengraph do + @behaviour Pleroma.Web.RichMedia.Parser.TTL + + @impl true + def ttl(%{"ttl" => ttl_string}, _url) do + with ttl <- String.to_integer(ttl_string) do + now = DateTime.utc_now() |> DateTime.to_unix() + now + ttl + else + _ -> nil + end + end + + def ttl(_, _), do: nil +end |