{-# LANGUAGE TemplateHaskell #-} module Web.Mackerel.Types.Channel where import Data.Aeson import qualified Data.Aeson as Aeson import Data.Aeson.TH (deriveJSON) import Data.Aeson.Types (typeMismatch) import qualified Data.Text as Text import Web.Mackerel.Internal.TH data ChannelId = ChannelId String deriving (Eq, Show) instance FromJSON ChannelId where parseJSON (Aeson.String channelId') = return $ ChannelId $ Text.unpack channelId' parseJSON o = typeMismatch "ChannelId" o instance ToJSON ChannelId where toJSON (ChannelId channelId') = toJSON channelId' data Channel = Channel { channelId :: ChannelId, channelName :: String, channelType :: String } deriving (Eq, Show) $(deriveJSON options ''Channel)