Packages

Supplemental storages and uploads for use with Capsule

Current section

Files

Jump to
capsule_supplement lib supplement uploads uri.ex
Raw

lib/supplement/uploads/uri.ex

defimpl Capsule.Upload, for: URI do
def contents(name) do
download =
Task.async(fn ->
:httpc.request(:get, {name |> URI.to_string() |> String.to_charlist(), []}, [],
body_format: :binary
)
end)
case download |> Task.await(15_000) do
{:ok, {{'HTTP/1.1', 200, 'OK'}, _headers, body}} ->
{:ok, body}
{:ok, {{'HTTP/1.1', code, _}, _headers, _}} ->
{:error, "Unsuccessful response code: #{code}"}
{:error, {reason, _}} ->
{:error, reason}
end
end
def name(%{path: path}), do: Path.basename(path)
end