From 2b48a574e8b9fed03a5c1969af4bb1e338f1be26 Mon Sep 17 00:00:00 2001 From: adambrangenberg Date: Sun, 7 Dec 2025 06:36:43 +0100 Subject: implemented section 1-3 --- src/Data/WellKnownClientData.hs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Data/WellKnownClientData.hs (limited to 'src/Data/WellKnownClientData.hs') diff --git a/src/Data/WellKnownClientData.hs b/src/Data/WellKnownClientData.hs new file mode 100644 index 0000000..310002d --- /dev/null +++ b/src/Data/WellKnownClientData.hs @@ -0,0 +1,34 @@ +{-# LANGUAGE DeriveGeneric #-} + +module Data.WellKnownClientData (WellKnownClient, makeWellKnownClient) where + +import Data.Aeson +import Data.Aeson.TH +import GHC.Generics (Generic) + +data BaseUrlHolder = BaseUrlHolder + { base_url :: String + } deriving (Eq, Show, Generic) + +instance FromJSON BaseUrlHolder where +instance ToJSON BaseUrlHolder where + +data WellKnownClient = WellKnownClient + { homeserver :: BaseUrlHolder + , identity_server :: BaseUrlHolder + } deriving (Eq, Show, Generic) + +fieldMapping :: String -> String +fieldMapping "homeserver" = "m.homeserver" +fieldMapping "identity_server" = "m.identity_server" +fieldMapping name = name + +instance FromJSON WellKnownClient where + parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = fieldMapping } + +instance ToJSON WellKnownClient where + toJSON = genericToJSON defaultOptions { fieldLabelModifier = fieldMapping } + +makeWellKnownClient :: String -> String -> WellKnownClient +makeWellKnownClient homeserver identity_server = + WellKnownClient (BaseUrlHolder homeserver) (BaseUrlHolder identity_server) -- cgit v1.2.3