Current section

Files

Jump to
mux lib mux video uploads.ex
Raw

lib/mux/video/uploads.ex

defmodule Mux.Video.Uploads do
@moduledoc """
This module provides functions for managing direct uploads in Mux Video. [API Documentation](https://docs.mux.com/docs/direct-upload)
"""
alias Mux.{Base, Fixtures}
@path "/video/v1/uploads/"
@doc """
Create a new direct upload.
Returns `{:ok, upload, %Tesla.Client{}}`.
## Examples
iex> client = Mux.Base.new("my_token_id", "my_token_secret")
iex> params = %{"new_asset_settings" => %{"playback_policies" => ["public"]}, "cors_origin" => "http://localhost:8080"}
iex> Mux.Video.Uploads.create(client, params)
{:ok, #{inspect(Fixtures.upload(:create))}, #{
inspect(Fixtures.tesla_env({:upload, [:create]}))
}}
"""
def create(client, params) do
Base.post(client, @path, params)
end
@doc """
List direct uploads.
Returns a tuple such as `{:ok, uploads, %Telsa.Env{}}`
## Examples
iex> client = Mux.Base.new("my_token_id", "my_token_secret")
iex> {:ok, uploads, _env} = Mux.Video.Uploads.list(client)
iex> uploads
#{inspect([Fixtures.upload(), Fixtures.upload()])}
"""
def list(client, params \\ []), do: Base.get(client, @path, query: params)
@doc """
Retrieve a direct upload by ID.
Returns a tuple such as `{:ok, upload, %Telsa.Env{}}`
## Examples
iex> client = Mux.Base.new("my_token_id", "my_token_secret")
iex> {:ok, upload, _env} = Mux.Video.Uploads.get(client, "OOTbA00CpWh6OgwV3asF00IvD2STk22UXM")
iex> upload
#{inspect(Fixtures.upload())}
"""
def get(client, key_id, options \\ []) do
Base.get(client, @path <> key_id, query: options)
end
@doc """
Cancel a direct upload.
Returns a tuple such as `{:ok, %Telsa.Env{}}`
## Examples
iex> client = Mux.Base.new("my_token_id", "my_token_secret")
iex> {:ok, direct_upload, _env} = Mux.Video.Uploads.cancel(client, "OOTbA00CpWh6OgwV3asF00IvD2STk22UXM")
iex> direct_upload
#{inspect(Fixtures.upload(:cancel))}
"""
def cancel(client, key_id) do
Base.put(client, @path <> key_id <> "/cancel", %{}, [])
end
end