aboutsummaryrefslogtreecommitdiff
path: root/clientapi/routing/routing.go
diff options
context:
space:
mode:
authorkegsay <kegan@matrix.org>2021-07-27 12:47:32 +0100
committerGitHub <noreply@github.com>2021-07-27 12:47:32 +0100
commit32538640db6bfbdb890729e8137151ffbbec9a28 (patch)
treebcd98d8b0d977058492fce03d69f43cc3a41be51 /clientapi/routing/routing.go
parente3679799ea6f6387d36fb1a2f938f8ea9711ad2d (diff)
Key backups (1/2) : Add E2E session backup metadata tables (#1943)
* Initial key backup paths and userapi API * Fix unit tests * Add key backup table * Glue REST API to database * Linting * use writer on sqlite
Diffstat (limited to 'clientapi/routing/routing.go')
-rw-r--r--clientapi/routing/routing.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go
index d768247a..194ab299 100644
--- a/clientapi/routing/routing.go
+++ b/clientapi/routing/routing.go
@@ -896,6 +896,48 @@ func Setup(
}),
).Methods(http.MethodGet, http.MethodOptions)
+ // Key Backup Versions
+ r0mux.Handle("/room_keys/version/{versionID}",
+ httputil.MakeAuthAPI("get_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ version := req.URL.Query().Get("version")
+ return KeyBackupVersion(req, userAPI, device, version)
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+ r0mux.Handle("/room_keys/version",
+ httputil.MakeAuthAPI("get_latest_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ return KeyBackupVersion(req, userAPI, device, "")
+ }),
+ ).Methods(http.MethodGet, http.MethodOptions)
+ r0mux.Handle("/room_keys/version/{versionID}",
+ httputil.MakeAuthAPI("put_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ version := req.URL.Query().Get("version")
+ if version == "" {
+ return util.JSONResponse{
+ Code: 400,
+ JSON: jsonerror.InvalidArgumentValue("version must be specified"),
+ }
+ }
+ return ModifyKeyBackupVersionAuthData(req, userAPI, device, version)
+ }),
+ ).Methods(http.MethodPut)
+ r0mux.Handle("/room_keys/version/{versionID}",
+ httputil.MakeAuthAPI("delete_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ version := req.URL.Query().Get("version")
+ if version == "" {
+ return util.JSONResponse{
+ Code: 400,
+ JSON: jsonerror.InvalidArgumentValue("version must be specified"),
+ }
+ }
+ return DeleteKeyBackupVersion(req, userAPI, device, version)
+ }),
+ ).Methods(http.MethodDelete)
+ r0mux.Handle("/room_keys/version",
+ httputil.MakeAuthAPI("post_new_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
+ return CreateKeyBackupVersion(req, userAPI, device)
+ }),
+ ).Methods(http.MethodPost, http.MethodOptions)
+
// Supplying a device ID is deprecated.
r0mux.Handle("/keys/upload/{deviceID}",
httputil.MakeAuthAPI("keys_upload", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {