diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2022-10-31 09:13:28 +0000 |
---|---|---|
committer | Neil Alexander <neilalexander@users.noreply.github.com> | 2022-10-31 09:13:28 +0000 |
commit | f10c6f26e51e278ffe46f1267d6b188186a6b90e (patch) | |
tree | 5dea86427e3070d487c3f09ada90bd3825877ae4 /clientapi/routing | |
parent | 69aff372f3e0ac5d98292e1e5382b66b162037ea (diff) |
Add `/_dendrite/admin/downloadState/{serverName}/{roomID}` admin endpoint
Diffstat (limited to 'clientapi/routing')
-rw-r--r-- | clientapi/routing/admin.go | 40 | ||||
-rw-r--r-- | clientapi/routing/routing.go | 6 |
2 files changed, 46 insertions, 0 deletions
diff --git a/clientapi/routing/admin.go b/clientapi/routing/admin.go index 69bca13b..9088f771 100644 --- a/clientapi/routing/admin.go +++ b/clientapi/routing/admin.go @@ -191,3 +191,43 @@ func AdminMarkAsStale(req *http.Request, cfg *config.ClientAPI, keyAPI api.Clien JSON: struct{}{}, } } + +func AdminDownloadState(req *http.Request, cfg *config.ClientAPI, device *userapi.Device, rsAPI roomserverAPI.ClientRoomserverAPI) util.JSONResponse { + vars, err := httputil.URLDecodeMapValues(mux.Vars(req)) + if err != nil { + return util.ErrorResponse(err) + } + roomID, ok := vars["roomID"] + if !ok { + return util.JSONResponse{ + Code: http.StatusBadRequest, + JSON: jsonerror.MissingArgument("Expecting room ID."), + } + } + serverName, ok := vars["serverName"] + if !ok { + return util.JSONResponse{ + Code: http.StatusBadRequest, + JSON: jsonerror.MissingArgument("Expecting remote server name."), + } + } + res := &roomserverAPI.PerformAdminDownloadStateResponse{} + if err := rsAPI.PerformAdminDownloadState( + req.Context(), + &roomserverAPI.PerformAdminDownloadStateRequest{ + UserID: device.UserID, + RoomID: roomID, + ServerName: gomatrixserverlib.ServerName(serverName), + }, + res, + ); err != nil { + return jsonerror.InternalAPIError(req.Context(), err) + } + if err := res.Error; err != nil { + return err.JSONResponse() + } + return util.JSONResponse{ + Code: 200, + JSON: map[string]interface{}{}, + } +} diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go index 22bc77a0..17e9d5cf 100644 --- a/clientapi/routing/routing.go +++ b/clientapi/routing/routing.go @@ -163,6 +163,12 @@ func Setup( }), ).Methods(http.MethodPost, http.MethodOptions) + dendriteAdminRouter.Handle("/admin/downloadState/{serverName}/{roomID}", + httputil.MakeAdminAPI("admin_download_state", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse { + return AdminDownloadState(req, cfg, device, rsAPI) + }), + ).Methods(http.MethodGet, http.MethodOptions) + dendriteAdminRouter.Handle("/admin/fulltext/reindex", httputil.MakeAdminAPI("admin_fultext_reindex", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse { return AdminReindex(req, cfg, device, natsClient) |