All checks were successful
Build and Publish / build-release (push) Successful in 1m33s
39 lines
896 B
Elixir
39 lines
896 B
Elixir
defmodule ProviderService.S3 do
|
|
@bucket Application.compile_env(:provider_service, :s3_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
|