diff options
Diffstat (limited to 'src/Model/WellKnown.hs')
| -rw-r--r-- | src/Model/WellKnown.hs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/Model/WellKnown.hs b/src/Model/WellKnown.hs new file mode 100644 index 0000000..066c9e3 --- /dev/null +++ b/src/Model/WellKnown.hs @@ -0,0 +1,51 @@ +{-# 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
\ No newline at end of file |