module HipChat.Types.Rooms
( CreateRoomRequest(..)
, CreateRoomResponse(..)
, CreateRoomResponseLinks(..)
, CreateWebhookRequest(..)
, CreateWebhookResponse(..)
, CreateWebhookResponseLinks(..)
, GetAllMembersResponse(..)
, GetAllRoomsResponse(..)
, Message(..)
, RoomEvent(..)
, RoomStatistics(..)
, SendMessageResponse(..)
, UserItem(..)
, WebhookKey(..)
, createWebhookRequest
) where
import Data.Aeson
import Data.Aeson.Casing
import Data.String
import Data.Text (Text)
import GHC.Generics
import HipChat.Types.Common
import HipChat.Types.Rooms.CreateRoomRequest
import HipChat.Types.Rooms.CreateRoomResponse
import HipChat.Types.Rooms.CreateWebhookRequest
import HipChat.Types.Rooms.CreateWebhookResponse
import HipChat.Types.Rooms.GetAllMembersResponse
import HipChat.Types.Rooms.GetAllRoomsResponse
newtype Message = Message {
message :: Text
} deriving (Generic, IsString, Show)
instance ToJSON Message
data RoomStatistics = RoomStatistics
{ roomStatisticsMessagesSent :: Int
, roomStatisticsLastActive :: String
} deriving (Show, Generic)
instance FromJSON RoomStatistics where
parseJSON = genericParseJSON $ aesonDrop 14 snakeCase
data SendMessageResponse = SendMessageResponse
{ timestamp :: Text
, id :: Text
} deriving (Show, Generic)
instance FromJSON SendMessageResponse