aboutsummaryrefslogtreecommitdiff
path: root/clientapi/routing/routing.go
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-11-02 11:17:53 +0100
committerGitHub <noreply@github.com>2022-11-02 10:17:53 +0000
commitb367cfeddf89456e7d067df8262ff5579fcbb9a1 (patch)
treed0be66c1533e92b571e778c5995910901315eb09 /clientapi/routing/routing.go
parent75a508cc279526b7463072836f610cac67ea4e06 (diff)
Implement `/thirdparty` endpoints (#2831)
Implements the following endpoints ``` GET /_matrix/client/v3/thirdparty/protocols GET /_matrix/client/v3/thirdparty/protocols/{protocol} GET /_matrix/client/v3/thirdparty/location GET /_matrix/client/v3/thirdparty/location/{protocol} GET /_matrix/client/v3/thirdparty/user GET /_matrix/client/v3/thirdparty/user/{protocol} ```
Diffstat (limited to 'clientapi/routing/routing.go')
-rw-r--r--clientapi/routing/routing.go48
1 files changed, 43 insertions, 5 deletions
diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go
index 17e9d5cf..f35aa7e1 100644
--- a/clientapi/routing/routing.go
+++ b/clientapi/routing/routing.go
@@ -869,12 +869,50 @@ func Setup(
).Methods(http.MethodGet, http.MethodOptions)
v3mux.Handle("/thirdparty/protocols",
- httputil.MakeExternalAPI("thirdparty_protocols", func(req *http.Request) util.JSONResponse {
- // TODO: Return the third party protcols
- return util.JSONResponse{
- Code: http.StatusOK,
- JSON: struct{}{},
+ httputil.MakeAuthAPI("thirdparty_protocols", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ return Protocols(req, asAPI, device, "")
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+
+ v3mux.Handle("/thirdparty/protocol/{protocolID}",
+ httputil.MakeAuthAPI("thirdparty_protocols", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
+ if err != nil {
+ return util.ErrorResponse(err)
+ }
+ return Protocols(req, asAPI, device, vars["protocolID"])
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+
+ v3mux.Handle("/thirdparty/user/{protocolID}",
+ httputil.MakeAuthAPI("thirdparty_user", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
+ if err != nil {
+ return util.ErrorResponse(err)
+ }
+ return User(req, asAPI, device, vars["protocolID"], req.URL.Query())
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+
+ v3mux.Handle("/thirdparty/user",
+ httputil.MakeAuthAPI("thirdparty_user", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ return User(req, asAPI, device, "", req.URL.Query())
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+
+ v3mux.Handle("/thirdparty/location/{protocolID}",
+ httputil.MakeAuthAPI("thirdparty_location", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
+ if err != nil {
+ return util.ErrorResponse(err)
}
+ return Location(req, asAPI, device, vars["protocolID"], req.URL.Query())
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+
+ v3mux.Handle("/thirdparty/location",
+ httputil.MakeAuthAPI("thirdparty_location", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ return Location(req, asAPI, device, "", req.URL.Query())
}),
).Methods(http.MethodGet, http.MethodOptions)