mackerel-client-0.2.0: src/Web/Mackerel/Types/Channel.hs
{-# 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)