From 3e2060422ed51096fc71148c55c47d5767593846 Mon Sep 17 00:00:00 2001 From: adambrangenberg Date: Wed, 24 Dec 2025 05:09:27 +0100 Subject: Section 5: Capabilities complete --- src/Endpoints/CapabilitiesEndpoint.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/Endpoints/CapabilitiesEndpoint.hs (limited to 'src/Endpoints/CapabilitiesEndpoint.hs') 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 + } -- cgit v1.2.3