{-# LANGUAGE DeriveGeneric #-} module Model.WellKnown (WellKnownClientResponse (..) , BaseUrlHolder (..) , WellKnownSupportResponse (..) , Contact (..) ) where import Data.Aeson import GHC.Generics (Generic) import Data.Text (Text) type URI = Text type EMail = Text type UserId = Text ---------------------------------------------------------------------------------------------------- data BaseUrlHolder = BaseUrlHolder { base_url :: URI } deriving (Eq, Show, Generic) instance ToJSON BaseUrlHolder where data WellKnownClientResponse = WellKnownClientResponse { homeserver :: BaseUrlHolder , identity_server :: BaseUrlHolder } deriving (Eq, Show, Generic) instance ToJSON WellKnownClientResponse where toJSON = genericToJSON defaultOptions { fieldLabelModifier = \name -> case name of "homeserver" -> "m.homeserver" "identity_server" -> "m.identity_server" other -> other } ---------------------------------------------------------------------------------------------------- data Contact = Contact { email_address :: EMail , matrix_id :: UserId , role :: Text -- Enum? [m.role.admin, m.role.security] } deriving (Eq, Show, Generic) instance ToJSON Contact where data WellKnownSupportResponse = WellKnownSupportResponse { contacts :: [Contact] , support_page :: URI } deriving (Eq, Show, Generic) instance ToJSON WellKnownSupportResponse where