{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.Matrix.Room (RoomCreatePreset (..), RoomCreateRequest (..)) where
import Data.Aeson (ToJSON (..), Value (..), genericToJSON)
import qualified Data.Aeson as Aeson
import Data.Aeson.Casing (aesonPrefix, snakeCase)
import Data.Text (Text)
import GHC.Generics (Generic)
data RoomCreatePreset
= PrivateChat
| TrustedPrivateChat
| PublicChat
deriving (RoomCreatePreset -> RoomCreatePreset -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RoomCreatePreset -> RoomCreatePreset -> Bool
$c/= :: RoomCreatePreset -> RoomCreatePreset -> Bool
== :: RoomCreatePreset -> RoomCreatePreset -> Bool
$c== :: RoomCreatePreset -> RoomCreatePreset -> Bool
Eq, Int -> RoomCreatePreset -> ShowS
[RoomCreatePreset] -> ShowS
RoomCreatePreset -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RoomCreatePreset] -> ShowS
$cshowList :: [RoomCreatePreset] -> ShowS
show :: RoomCreatePreset -> String
$cshow :: RoomCreatePreset -> String
showsPrec :: Int -> RoomCreatePreset -> ShowS
$cshowsPrec :: Int -> RoomCreatePreset -> ShowS
Show)
instance ToJSON RoomCreatePreset where
toJSON :: RoomCreatePreset -> Value
toJSON RoomCreatePreset
preset = Text -> Value
String forall a b. (a -> b) -> a -> b
$ case RoomCreatePreset
preset of
RoomCreatePreset
PrivateChat -> Text
"private_chat"
RoomCreatePreset
TrustedPrivateChat -> Text
"trusted_private_chat"
RoomCreatePreset
PublicChat -> Text
"public_chat"
data RoomCreateRequest = RoomCreateRequest
{ RoomCreateRequest -> RoomCreatePreset
rcrPreset :: RoomCreatePreset,
RoomCreateRequest -> Text
rcrRoomAliasName :: Text,
RoomCreateRequest -> Text
rcrName :: Text,
RoomCreateRequest -> Text
rcrTopic :: Text
}
deriving (RoomCreateRequest -> RoomCreateRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RoomCreateRequest -> RoomCreateRequest -> Bool
$c/= :: RoomCreateRequest -> RoomCreateRequest -> Bool
== :: RoomCreateRequest -> RoomCreateRequest -> Bool
$c== :: RoomCreateRequest -> RoomCreateRequest -> Bool
Eq, Int -> RoomCreateRequest -> ShowS
[RoomCreateRequest] -> ShowS
RoomCreateRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RoomCreateRequest] -> ShowS
$cshowList :: [RoomCreateRequest] -> ShowS
show :: RoomCreateRequest -> String
$cshow :: RoomCreateRequest -> String
showsPrec :: Int -> RoomCreateRequest -> ShowS
$cshowsPrec :: Int -> RoomCreateRequest -> ShowS
Show, forall x. Rep RoomCreateRequest x -> RoomCreateRequest
forall x. RoomCreateRequest -> Rep RoomCreateRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RoomCreateRequest x -> RoomCreateRequest
$cfrom :: forall x. RoomCreateRequest -> Rep RoomCreateRequest x
Generic)
instance ToJSON RoomCreateRequest where
toJSON :: RoomCreateRequest -> Value
toJSON = forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON forall a b. (a -> b) -> a -> b
$ (ShowS -> Options
aesonPrefix ShowS
snakeCase) {omitNothingFields :: Bool
Aeson.omitNothingFields = Bool
True}