-- |
--
module Data.Radius.Attribute.Number (
  Number (..),

  toWord, fromWord,
  ) where

import Data.Word (Word8)


data Number
  = UserName
  | ProxyState
  | State
  | MessageAuthenticator
  | ReplyMessage
  | VendorSpecific
  | Other !Word8
  deriving (Eq, Ord, Show, Read)

toWord :: Number -> Word8
toWord = d  where
  d UserName              =   1
  d ReplyMessage          =  18
  d State                 =  24
  d VendorSpecific        =  26
  d ProxyState            =  33
  d MessageAuthenticator  =  80
  d (Other w8)            =  w8

fromWord :: Word8 -> Number
fromWord = d  where
  d  1  =  UserName
  d 18  =  ReplyMessage
  d 24  =  State
  d 26  =  VendorSpecific
  d 33  =  ProxyState
  d 80  =  MessageAuthenticator
  d w8  =  Other w8