aboutsummaryrefslogtreecommitdiff
path: root/src/Data/WellKnownClientData.hs
diff options
context:
space:
mode:
authoradambrangenberg <adabran06@gmail.com>2025-12-07 06:36:43 +0100
committeradambrangenberg <adabran06@gmail.com>2025-12-07 06:36:43 +0100
commit2b48a574e8b9fed03a5c1969af4bb1e338f1be26 (patch)
treef31c92f7788969b034838b8ec0ea7e187a746fc2 /src/Data/WellKnownClientData.hs
parentfb14daae9d3bc05a0d18f58875ef54e328081f19 (diff)
implemented section 1-3
Diffstat (limited to 'src/Data/WellKnownClientData.hs')
-rw-r--r--src/Data/WellKnownClientData.hs34
1 files changed, 34 insertions, 0 deletions
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)