aboutsummaryrefslogtreecommitdiff
path: root/src/Endpoints/CapabilitiesEndpoint.hs
diff options
context:
space:
mode:
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
+ }