aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-03-29 01:39:01 +0200
committerRoger Braun <roger@rogerbraun.net>2017-03-29 01:39:01 +0200
commit08fdbd6f3ab15ac8312073d832324516b723b81a (patch)
tree8546c68833fb842f455968f562a04e1fe6efc2b3 /lib
parentd2cdcc097b171461687df1613371c4b04da60186 (diff)
downloadpleroma-08fdbd6f3ab15ac8312073d832324516b723b81a.tar.gz
Add Uploads.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/upload.ex30
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