aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/helpers/mogrify_helper.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/helpers/mogrify_helper.ex')
-rw-r--r--lib/pleroma/helpers/mogrify_helper.ex25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/helpers/mogrify_helper.ex b/lib/pleroma/helpers/mogrify_helper.ex
new file mode 100644
index 000000000..67edb35c3
--- /dev/null
+++ b/lib/pleroma/helpers/mogrify_helper.ex
@@ -0,0 +1,25 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Helpers.MogrifyHelper do
+ @moduledoc """
+ Handles common Mogrify operations.
+ """
+
+ @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()}
+ @doc "Stores binary content fetched from specified URL as a temporary file."
+ def store_as_temporary_file(url, body) do
+ path = Mogrify.temporary_path_for(%{path: url})
+ with :ok <- File.write(path, body), do: {:ok, path}
+ end
+
+ @spec store_as_temporary_file(String.t(), String.t()) :: Mogrify.Image.t() | any()
+ @doc "Modifies file at specified path by resizing to specified limit dimensions."
+ def in_place_resize_to_limit(path, resize_dimensions) do
+ path
+ |> Mogrify.open()
+ |> Mogrify.resize_to_limit(resize_dimensions)
+ |> Mogrify.save(in_place: true)
+ end
+end