aboutsummaryrefslogtreecommitdiff
path: root/src/Endpoints/WellKnownEndpoint.hs
diff options
context:
space:
mode:
authoradambrangenberg <adabran06@gmail.com>2025-12-24 03:40:10 +0100
committeradambrangenberg <adabran06@gmail.com>2025-12-24 03:40:10 +0100
commita0886694f73fc382d78da79ab8bfb27475757bab (patch)
tree652ba9b603a1acaf4dfca188f7bb2c29c6bccfd0 /src/Endpoints/WellKnownEndpoint.hs
parent2b48a574e8b9fed03a5c1969af4bb1e338f1be26 (diff)
Implemented basic auth, refactor
Diffstat (limited to 'src/Endpoints/WellKnownEndpoint.hs')
-rw-r--r--src/Endpoints/WellKnownEndpoint.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/Endpoints/WellKnownEndpoint.hs b/src/Endpoints/WellKnownEndpoint.hs
new file mode 100644
index 0000000..c63c5e5
--- /dev/null
+++ b/src/Endpoints/WellKnownEndpoint.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE TypeOperators #-}
+
+module Endpoints.WellKnownEndpoint (WellKnownAPI, wellKnownServer) where
+
+import Servant
+import Data.Text (pack)
+
+import Model.WellKnown
+
+----------------------------------------------------------------------------------------------------
+
+type WellKnownAPI = GetWellKnownClient :<|> GetWellKnownSupport
+
+wellKnownServer :: Server WellKnownAPI
+wellKnownServer = handleWellKnownClientGet :<|> handleWellKnownSupportGet
+--- GET /.well-known/matrix/client -----------------------------------------------------------------
+
+type GetWellKnownClient = ".well-known" :> "matrix" :> "client"
+ :> Get '[JSON] WellKnownClientResponse
+
+handleWellKnownClientGet :: Handler WellKnownClientResponse
+handleWellKnownClientGet = return $ WellKnownClientResponse
+ { homeserver = BaseUrlHolder (pack "http://localhost:8080")
+ , identity_server = BaseUrlHolder (pack "https://vector.im")
+ }
+
+--- GET /.well-known/matrix/support ----------------------------------------------------------------
+type GetWellKnownSupport = ".well-known" :> "matrix" :> "support"
+ :> Get '[JSON] WellKnownSupportResponse
+
+handleWellKnownSupportGet :: Handler WellKnownSupportResponse
+handleWellKnownSupportGet = return $ WellKnownSupportResponse
+ { contacts = [Contact (pack "email") (pack "mxid") (pack "m.role.admin")]
+ , support_page = pack "http://localhost:8080/support.html"
+ }
+