diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/upload.ex | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex new file mode 100644 index 000000000..43ebe98e3 --- /dev/null +++ b/lib/pleroma/upload.ex @@ -0,0 +1,30 @@ +defmodule Pleroma.Upload do + def store(%Plug.Upload{} = file) do + uuid = Ecto.UUID.generate + upload_folder = Path.join(upload_path(), uuid) + File.mkdir_p!(upload_folder) + result_file = Path.join(upload_folder, file.filename) + File.cp!(file.path, result_file) + + %{ + "type" => "Image", + "href" => url_for(Path.join(uuid, file.filename)), + "name" => file.filename, + "uuid" => uuid + } + end + + defp upload_path do + Application.get_env(:pleroma, Pleroma.Upload) + |> Keyword.fetch!(:uploads) + end + + defp url_for(file) do + host = + Application.get_env(:pleroma, Pleroma.Web.Endpoint) + |> Keyword.fetch!(:url) + |> Keyword.fetch!(:host) + + "https://#{host}/media/#{file}" + end +end |