Packages

An unofficial Signal Wire API library for elixir

Current section

Files

Jump to
signal_wire lib signal_wire rest conference_token.ex
Raw

lib/signal_wire/rest/conference_token.ex

defmodule SignalWire.ConferenceToken do
@moduledoc """
Represents a Conference Token resource in the Signal Wire API.
- [Signal Wire docs](https://developer.signalwire.com/rest/list-conference-tokens)
"""
import SignalWire.Utils
@url "/api/video/conferences/:conference_id/conference_tokens"
@find_url "/api/video/conference_tokens/:id"
defstruct [:id, :name, :token, :scopes]
@spec list(binary, map) :: SignalWire.success_list() | SignalWire.error()
def list(conference_id, query \\ %{}) do
list(SignalWire.client(), conference_id, query)
end
@spec list(Tesla.Client.t(), binary, map) :: SignalWire.success_list() | SignalWire.error()
def list(client, conference_id, query) do
case Tesla.get!(client, build_url(@url, [conference_id: conference_id], query)) do
%Tesla.Env{body: %{"data" => data, "links" => links}, status: 200} ->
{:ok, as_struct(__MODULE__, data), rest_paging(links)}
response ->
{:error, response}
end
end
@spec find(binary) :: SignalWire.success() | SignalWire.error()
def find(id), do: find(SignalWire.client(), id)
@spec find(Tesla.Client.t(), binary) :: SignalWire.success() | SignalWire.error()
def find(client, id) do
case Tesla.get!(client, build_url(@find_url, [id: id])) do
%Tesla.Env{body: body, status: 200} -> {:ok, as_struct(__MODULE__, body)}
response -> {:error, response}
end
end
@spec reset(binary) :: SignalWire.success() | SignalWire.error()
def reset(id), do: reset(SignalWire.client(), id)
@spec reset(Tesla.Client.t(), binary) :: SignalWire.success() | SignalWire.error()
def reset(client, id) do
case Tesla.get!(client, build_url(@find_url <> "/reset", [id: id])) do
%Tesla.Env{body: body, status: 200} -> {:ok, as_struct(__MODULE__, body)}
response -> {:error, response}
end
end
end