aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/uploaders/s3.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/uploaders/s3.ex')
-rw-r--r--lib/pleroma/uploaders/s3.ex24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex
new file mode 100644
index 000000000..ce0ed3e34
--- /dev/null
+++ b/lib/pleroma/uploaders/s3.ex
@@ -0,0 +1,24 @@
+defmodule Pleroma.Uploaders.S3 do
+ @behaviour Pleroma.Uploaders.Uploader
+
+ def put_file(name, uuid, path, content_type, _should_dedupe) do
+ settings = Application.get_env(:pleroma, Pleroma.Uploaders.S3)
+ bucket = Keyword.fetch!(settings, :bucket)
+ public_endpoint = Keyword.fetch!(settings, :public_endpoint)
+
+ {:ok, file_data} = File.read(path)
+
+ File.rm!(path)
+
+ s3_name = "#{uuid}/#{name}"
+
+ {:ok, _} =
+ ExAws.S3.put_object(bucket, s3_name, file_data, [
+ {:acl, :public_read},
+ {:content_type, content_type}
+ ])
+ |> ExAws.request()
+
+ {:ok, "#{public_endpoint}/#{bucket}/#{s3_name}"}
+ end
+end