The behaviour for storage backends.
@callback delete(object_path :: String.t()) :: {:ok, any()} | {:error, any()}
@callback get_url(String.t()) :: {:ok, String.t()} | {:error, any()}
@callback store(source :: String.t(), dest :: String.t()) :: {:ok, any()} | {:error, any()}