hipchat-hs-0.0.3: lib/HipChat/Types/Name.hs
{-# LANGUAGE OverloadedStrings #-}
module HipChat.Types.Name where
-- Common name object
import Data.Aeson
import Data.Aeson.Types
import Data.Monoid
import Data.Text (Text)
data Name = Name
{ nameI18n :: Maybe Text -- ^ The optional localization key, used to look up the localized value. Valid length range: 1 - 40.
, nameValue :: Text -- ^ The default text. Valid length range: 1 - 100.
} deriving (Show, Eq)
instance ToJSON Name where
toJSON (Name i18n value) =
object $ maybe [] (\x -> [ "i18n" .= x ]) i18n <> [ "value" .= value ]
instance FromJSON Name where
parseJSON (Object x) = Name <$> x .:? "i18n" <*> x .: "value"
parseJSON x = typeMismatch "Name" x