defmodule Uploadex.Storage do @moduledoc """ Behaviour for a Storage implementation. """ @type record :: any() @type file :: map() | String.t @type opts :: Keyword.t @type status :: :ok | :error @doc """ Stores the file """ @callback store(file, opts) :: :ok | {:error, any()} @doc """ Deletes the file """ @callback delete(file, opts) :: :ok | {:error, any()} @doc """ Returns the file's URL """ @callback get_url(file, opts) :: {status, String.t} @doc """ Returns the path of a temporary file, that will be deleted after the configured amount of time. """ @callback get_temporary_file(file, String.t, opts) :: String.t end