lib/cdpotion/domain/device_access.ex

defmodule CDPotion.Domain.DeviceAccess do
  use CDPotion.Utils
  @typedoc "A device id."
  @type device_id :: String.t()

  @typedoc "Device information displayed in a user prompt to select a device."
  @type prompt_device :: %{
          id: CDPotion.Domain.DeviceAccess.device_id(),
          name: String.t()
        }

  @typedoc "Device request id."
  @type request_id :: String.t()

  @doc """
  Enable events in this domain.
  """
  def enable() do
    {"DeviceAccess.enable", %{}}
  end

  @doc """
  Disable events in this domain.
  """
  def disable() do
    {"DeviceAccess.disable", %{}}
  end

  @doc """
  Select a device in response to a DeviceAccess.deviceRequestPrompted event.
  ## Parameters:
    - `id:RequestId`: description not provided :(
    - `deviceId:DeviceId`: description not provided :(
  """
  def select_prompt(id, device_id) do
    params = as_query([{"id", id}, {"deviceId", device_id}])
    {"DeviceAccess.selectPrompt", params}
  end

  @doc """
  Cancel a prompt in response to a DeviceAccess.deviceRequestPrompted event.
  ## Parameters:
    - `id:RequestId`: description not provided :(
  """
  def cancel_prompt(id) do
    params = as_query([{"id", id}])
    {"DeviceAccess.cancelPrompt", params}
  end
end