Merge remote-tracking branch 'remotes/origin/develop' into 2168-media-preview-proxy
[akkoma] / lib / pleroma / helpers / mogrify_helper.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Helpers.MogrifyHelper do
6 @moduledoc """
7 Handles common Mogrify operations.
8 """
9
10 @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()}
11 @doc "Stores binary content fetched from specified URL as a temporary file."
12 def store_as_temporary_file(url, body) do
13 path = Mogrify.temporary_path_for(%{path: url})
14 with :ok <- File.write(path, body), do: {:ok, path}
15 end
16
17 @spec store_as_temporary_file(String.t(), String.t()) :: Mogrify.Image.t() | any()
18 @doc "Modifies file at specified path by resizing to specified limit dimensions."
19 def in_place_resize_to_limit(path, resize_dimensions) do
20 path
21 |> Mogrify.open()
22 |> Mogrify.resize_to_limit(resize_dimensions)
23 |> Mogrify.save(in_place: true)
24 end
25 end