Current section

Files

Jump to
teac lib teac api extensions required_configuration.ex
Raw

lib/teac/api/extensions/required_configuration.ex

defmodule Teac.Api.Extensions.RequiredConfiguration do
alias Teac.Api
@schema NimbleOptions.new!(
broadcaster_id: [type: :string, required: true],
extension_id: [type: :string, required: true],
extension_version: [type: :string, required: true],
required_configuration: [type: :string, required: true]
)
@doc """
Updates the extension's required_configuration string.
## Authorization
Requires a signed JWT created by an EBS (Extension Back-end Service).
## Options
* `:broadcaster_id` - required. The ID of the broadcaster who installed the extension.
* `:extension_id` - required. The ID of the extension.
* `:extension_version` - required. The version of the extension.
* `:required_configuration` - required. The required configuration string to activate the extension.
"""
@spec put(Teac.Client.t(), keyword()) :: {:ok, nil} | {:error, Teac.Error.t()}
def put(%Teac.Client{} = client, opts \\ []) do
case NimbleOptions.validate(opts, @schema) do
{:ok, opts} ->
[
base_url: Api.uri("extensions/required_configuration"),
headers: Api.headers(client),
params: [broadcaster_id: opts[:broadcaster_id]],
json: %{
extension_id: opts[:extension_id],
extension_version: opts[:extension_version],
required_configuration: opts[:required_configuration]
}
]
|> Keyword.merge(Application.get_env(:teac, :api_req_options, []))
|> Req.put!()
|> Api.handle_response()
{:error, %NimbleOptions.ValidationError{} = err} ->
{:error, err.message}
end
end
end