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