diff options
Diffstat (limited to 'clientapi')
-rw-r--r-- | clientapi/clientapi.go | 3 | ||||
-rw-r--r-- | clientapi/routing/routing.go | 32 |
2 files changed, 20 insertions, 15 deletions
diff --git a/clientapi/clientapi.go b/clientapi/clientapi.go index 8a2ea8fc..2c4fa5d6 100644 --- a/clientapi/clientapi.go +++ b/clientapi/clientapi.go @@ -46,6 +46,7 @@ func AddPublicRoutes( userAPI userapi.UserInternalAPI, keyAPI keyserverAPI.KeyInternalAPI, extRoomsProvider api.ExtraPublicRoomsProvider, + mscCfg *config.MSCs, ) { _, producer := kafka.SetupConsumerProducer(&cfg.Matrix.Kafka) @@ -57,6 +58,6 @@ func AddPublicRoutes( routing.Setup( router, cfg, eduInputAPI, rsAPI, asAPI, accountsDB, userAPI, federation, - syncProducer, transactionsCache, fsAPI, keyAPI, extRoomsProvider, + syncProducer, transactionsCache, fsAPI, keyAPI, extRoomsProvider, mscCfg, ) } diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go index 7c320253..a56359b4 100644 --- a/clientapi/routing/routing.go +++ b/clientapi/routing/routing.go @@ -58,6 +58,7 @@ func Setup( federationSender federationSenderAPI.FederationSenderInternalAPI, keyAPI keyserverAPI.KeyInternalAPI, extRoomsProvider api.ExtraPublicRoomsProvider, + mscCfg *config.MSCs, ) { rateLimits := newRateLimits(&cfg.RateLimiting) userInteractiveAuth := auth.NewUserInteractive(accountDB.GetAccountByPassword, cfg) @@ -110,20 +111,23 @@ func Setup( ) }), ).Methods(http.MethodPost, http.MethodOptions) - r0mux.Handle("/peek/{roomIDOrAlias}", - httputil.MakeAuthAPI(gomatrixserverlib.Peek, userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse { - if r := rateLimits.rateLimit(req); r != nil { - return *r - } - vars, err := httputil.URLDecodeMapValues(mux.Vars(req)) - if err != nil { - return util.ErrorResponse(err) - } - return PeekRoomByIDOrAlias( - req, device, rsAPI, accountDB, vars["roomIDOrAlias"], - ) - }), - ).Methods(http.MethodPost, http.MethodOptions) + + if mscCfg.Enabled("msc2753") { + r0mux.Handle("/peek/{roomIDOrAlias}", + httputil.MakeAuthAPI(gomatrixserverlib.Peek, userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse { + if r := rateLimits.rateLimit(req); r != nil { + return *r + } + vars, err := httputil.URLDecodeMapValues(mux.Vars(req)) + if err != nil { + return util.ErrorResponse(err) + } + return PeekRoomByIDOrAlias( + req, device, rsAPI, accountDB, vars["roomIDOrAlias"], + ) + }), + ).Methods(http.MethodPost, http.MethodOptions) + } r0mux.Handle("/joined_rooms", httputil.MakeAuthAPI("joined_rooms", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse { return GetJoinedRooms(req, device, rsAPI) |