Monadic WS

This commit is contained in:
qvalentin 2023-02-18 16:57:20 +01:00
parent 3dc0135b48
commit 01df3f1068
3 changed files with 114 additions and 13 deletions

View file

@ -0,0 +1,40 @@
{-# LANGUAGE DeriveGeneric #-}
module Types.WebSocketMessages.WebSocketMessages
( WebSocketMessage (..),
SetClientInfo (..),
JoinRoom (..),
)
where
import ClassyPrelude
import Data.Aeson
( FromJSON (parseJSON),
Options (sumEncoding),
SumEncoding (..),
decode,
defaultOptions,
genericParseJSON,
withObject,
(.:),
)
data WebSocketMessage = ClientInfoMessage SetClientInfo | JoinRoomMessage JoinRoom
deriving (Generic)
instance FromJSON WebSocketMessage where
parseJSON = genericParseJSON defaultOptions {sumEncoding = UntaggedValue}
data SetClientInfo = SetClientInfo
{ displayName :: Text
}
deriving (Generic, Show)
instance FromJSON SetClientInfo
data JoinRoom = JoinRoom
{ roomName :: Text
}
deriving (Generic, Show)
instance FromJSON JoinRoom