module Web.Slack.Channel
( Channel(..)
, Purpose(..)
, Topic(..)
, CreateReq(..)
, mkCreateReq
, CreateRsp(..)
)
where
import Data.Aeson.TH
import GHC.Generics (Generic)
import Web.FormUrlEncoded
import Web.Slack.Util
import Data.Text (Text)
data Channel =
Channel
{ channelId :: Text
, channelName :: Text
, channelCreated :: Integer
, channelCreator :: Text
, channelIsArchived :: Bool
, channelIsMember :: Bool
, channelIsGeneral :: Bool
, channelLastRead :: Text
, channelLatest :: Maybe Text
, channelUnreadCount :: Integer
, channelUnreadCountDisplay :: Integer
, channelMembers :: [Text]
, channelTopic :: Topic
, channelPurpose :: Purpose
}
deriving (Eq, Generic, Show)
data Purpose =
Purpose
{ purposeValue :: Text
, purposeCreator :: Text
, purposeLastSet :: Integer
}
deriving (Eq, Generic, Show)
data Topic =
Topic
{ topicValue :: Text
, topicCreator :: Text
, topicLastSet :: Integer
}
deriving (Eq, Generic, Show)
$(deriveJSON (jsonOpts "channel") ''Channel)
$(deriveJSON (jsonOpts "purpose") ''Purpose)
$(deriveJSON (jsonOpts "topic") ''Topic)
data CreateReq =
CreateReq
{ createReqToken :: Text
, createReqName :: Text
, createReqValidate :: Maybe Bool
}
deriving (Eq, Generic, Show)
$(deriveJSON (jsonOpts "createReq") ''CreateReq)
instance ToForm CreateReq where
toForm =
genericToForm (formOpts "createReq")
mkCreateReq
:: Text
-> Text
-> CreateReq
mkCreateReq token name =
CreateReq
{ createReqToken = token
, createReqName = name
, createReqValidate = Nothing
}
data CreateRsp =
CreateRsp
{ createRspOk :: Bool
, createRspChannel :: Channel
}
deriving (Eq, Generic, Show)
$(deriveJSON (jsonOpts "createRsp") ''CreateRsp)