This commit is contained in:
38
lib/provider_service/s3.ex
Normal file
38
lib/provider_service/s3.ex
Normal file
@@ -0,0 +1,38 @@
|
||||
defmodule ProviderService.S3 do
|
||||
@bucket Application.compile_env(:provider_service, :s3_bucket, "policy-bucket")
|
||||
|
||||
def presigned_upload_url(s3_key) do
|
||||
{:ok, url} =
|
||||
ExAws.Config.new(:s3)
|
||||
|> ExAws.S3.presigned_url(:put, @bucket, s3_key,
|
||||
expires_in: 900,
|
||||
query_params: [{"Content-Type", "application/pdf"}]
|
||||
)
|
||||
|
||||
url
|
||||
end
|
||||
|
||||
def presigned_download_url(s3_key) do
|
||||
{:ok, url} =
|
||||
ExAws.Config.new(:s3)
|
||||
|> ExAws.S3.presigned_url(:get, @bucket, s3_key, expires_in: 3600)
|
||||
|
||||
url
|
||||
end
|
||||
|
||||
def delete(s3_key) do
|
||||
ExAws.S3.delete_object(@bucket, s3_key)
|
||||
|> ExAws.request()
|
||||
end
|
||||
|
||||
def upload(local_path, s3_key) do
|
||||
local_path
|
||||
|> File.read!()
|
||||
|> then(&ExAws.S3.put_object(@bucket, s3_key, &1, content_type: "application/pdf"))
|
||||
|> ExAws.request()
|
||||
|> case do
|
||||
{:ok, _} -> :ok
|
||||
{:error, e} -> {:error, inspect(e)}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user