defmodule Rain do use Application alias Rain.{Bucket, Sink, Saucer, Renamer} def start(_type, _arg) do Bucket.start_link() Renamer.start_link() end def get_async(url, pid) do HTTPoison.get!(url, [], stream_to: pid, follow_redirect: true) |> Map.get(:id) end def download(url, name) do if String.starts_with?(url, "http://") || String.starts_with?(url, "https://") do key = UUID.uuid1() Saucer.start_link(key, url, name) key end end def extract() do Bucket.extract() end def cancel(key) do Bucket.cancel(key) end end