{-# 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