aboutsummaryrefslogtreecommitdiff
path: root/src/Endpoints/CapabilitiesEndpoint.hs
diff options
context:
space:
mode:
authoradambrangenberg <adabran06@gmail.com>2025-12-24 05:09:27 +0100
committeradambrangenberg <adabran06@gmail.com>2025-12-24 05:11:14 +0100
commit3e2060422ed51096fc71148c55c47d5767593846 (patch)
treee73102ce5b43938b36941f1ad84807d548fd0b02 /src/Endpoints/CapabilitiesEndpoint.hs
parent34cba7d0f9faffe7b97692ccc6b3402fced63cbb (diff)
Section 5: Capabilities complete
Diffstat (limited to 'src/Endpoints/CapabilitiesEndpoint.hs')
-rw-r--r--src/Endpoints/CapabilitiesEndpoint.hs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/Endpoints/CapabilitiesEndpoint.hs b/src/Endpoints/CapabilitiesEndpoint.hs
new file mode 100644
index 0000000..92fefba
--- /dev/null
+++ b/src/Endpoints/CapabilitiesEndpoint.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Endpoints.CapabilitiesEndpoint (CapabilitiesAPI, capabilitiesServer) where
+
+import Servant
+import qualified Data.Map as Map
+
+import Model.Capabilities
+
+----------------------------------------------------------------------------------------------------
+type CapabilitiesAPI = GetCapabilities
+
+capabilitiesServer :: Server CapabilitiesAPI
+capabilitiesServer = handleCapabilitiesGet
+
+--- GET /_matrix/client/v3/capabilities ------------------------------------------------------------
+type GetCapabilities = "_matrix" :> "client" :> "v3" :> "capabilities"
+ :> Get '[JSON] CapabilitiesResponse
+
+handleCapabilitiesGet :: Handler CapabilitiesResponse
+handleCapabilitiesGet = return $ CapabilitiesResponse
+ { pid_changes = BooleanCapability False
+ , change_password = BooleanCapability False
+ , get_login_token = BooleanCapability False
+ , profile_fields = ProfileFieldsCapability False Nothing Nothing
+ , room_versions = RoomVersionsCapability "12" $ Map.singleton "12" "stable"
+ , set_avatar_url = BooleanCapability False
+ , set_display_name = BooleanCapability False
+ }