Skip to main content

lib/kameleoon/data/operating_system.ex

defmodule Kameleoon.Data.OperatingSystem do
  @moduledoc false

  alias Kameleoon.Data.Validation

  @type operating_system_type ::
          :windows
          | :mac
          | :ios
          | :linux
          | :android
          | :windows_phone

  @valid_types [
    :windows,
    :mac,
    :ios,
    :linux,
    :android,
    :windows_phone
  ]

  @enforce_keys [:type]
  defstruct [:type]

  @type t :: %__MODULE__{
          type: operating_system_type()
        }

  @spec new!(operating_system_type()) :: t()
  def new!(type) do
    %__MODULE__{
      type: Validation.one_of!(type, @valid_types, :type)
    }
  end
end