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