mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-28 17:23:09 -06:00
Fix routing manually
This commit is contained in:
parent
02699bf704
commit
bdde8c37ec
|
|
@ -117,10 +117,6 @@ func Setup(
|
||||||
|
|
||||||
r0mux := publicAPIMux.PathPrefix("/r0").Subrouter()
|
r0mux := publicAPIMux.PathPrefix("/r0").Subrouter()
|
||||||
unstableMux := publicAPIMux.PathPrefix("/unstable").Subrouter()
|
unstableMux := publicAPIMux.PathPrefix("/unstable").Subrouter()
|
||||||
defer unstableMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
r.URL.Path = strings.Replace(r.URL.Path, "/unstable/", "/r0/", 1)
|
|
||||||
r0mux.ServeHTTP(w, r)
|
|
||||||
}) // serve r0 endpoints by default unless overridden
|
|
||||||
|
|
||||||
r0mux.Handle("/createRoom",
|
r0mux.Handle("/createRoom",
|
||||||
httputil.MakeAuthAPI("createRoom", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
httputil.MakeAuthAPI("createRoom", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
|
|
@ -902,157 +898,171 @@ func Setup(
|
||||||
|
|
||||||
// Key Backup Versions (Metadata)
|
// Key Backup Versions (Metadata)
|
||||||
|
|
||||||
r0mux.Handle("/room_keys/version/{version}",
|
getBackupKeysVersion := httputil.MakeAuthAPI("get_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
httputil.MakeAuthAPI("get_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
if err != nil {
|
||||||
if err != nil {
|
return util.ErrorResponse(err)
|
||||||
return util.ErrorResponse(err)
|
}
|
||||||
}
|
return KeyBackupVersion(req, userAPI, device, vars["version"])
|
||||||
return KeyBackupVersion(req, userAPI, device, vars["version"])
|
})
|
||||||
}),
|
|
||||||
).Methods(http.MethodGet, http.MethodOptions)
|
getLatestBackupKeysVersion := httputil.MakeAuthAPI("get_latest_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
r0mux.Handle("/room_keys/version",
|
return KeyBackupVersion(req, userAPI, device, "")
|
||||||
httputil.MakeAuthAPI("get_latest_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
})
|
||||||
return KeyBackupVersion(req, userAPI, device, "")
|
|
||||||
}),
|
putBackupKeysVersion := httputil.MakeAuthAPI("put_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
).Methods(http.MethodGet, http.MethodOptions)
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
r0mux.Handle("/room_keys/version/{version}",
|
if err != nil {
|
||||||
httputil.MakeAuthAPI("put_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
return util.ErrorResponse(err)
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
}
|
||||||
if err != nil {
|
return ModifyKeyBackupVersionAuthData(req, userAPI, device, vars["version"])
|
||||||
return util.ErrorResponse(err)
|
})
|
||||||
}
|
|
||||||
return ModifyKeyBackupVersionAuthData(req, userAPI, device, vars["version"])
|
deleteBackupKeysVersion := httputil.MakeAuthAPI("delete_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
}),
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
).Methods(http.MethodPut)
|
if err != nil {
|
||||||
r0mux.Handle("/room_keys/version/{version}",
|
return util.ErrorResponse(err)
|
||||||
httputil.MakeAuthAPI("delete_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
}
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
return DeleteKeyBackupVersion(req, userAPI, device, vars["version"])
|
||||||
if err != nil {
|
})
|
||||||
return util.ErrorResponse(err)
|
|
||||||
}
|
postNewBackupKeysVersion := httputil.MakeAuthAPI("post_new_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
return DeleteKeyBackupVersion(req, userAPI, device, vars["version"])
|
return CreateKeyBackupVersion(req, userAPI, device)
|
||||||
}),
|
})
|
||||||
).Methods(http.MethodDelete)
|
|
||||||
r0mux.Handle("/room_keys/version",
|
r0mux.Handle("/room_keys/version/{version}", getBackupKeysVersion).Methods(http.MethodGet, http.MethodOptions)
|
||||||
httputil.MakeAuthAPI("post_new_backup_keys_version", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
r0mux.Handle("/room_keys/version", getLatestBackupKeysVersion).Methods(http.MethodGet, http.MethodOptions)
|
||||||
return CreateKeyBackupVersion(req, userAPI, device)
|
r0mux.Handle("/room_keys/version/{version}", putBackupKeysVersion).Methods(http.MethodPut)
|
||||||
}),
|
r0mux.Handle("/room_keys/version/{version}", deleteBackupKeysVersion).Methods(http.MethodDelete)
|
||||||
).Methods(http.MethodPost, http.MethodOptions)
|
r0mux.Handle("/room_keys/version", postNewBackupKeysVersion).Methods(http.MethodPost, http.MethodOptions)
|
||||||
|
|
||||||
|
unstableMux.Handle("/room_keys/version/{version}", getBackupKeysVersion).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
unstableMux.Handle("/room_keys/version", getLatestBackupKeysVersion).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
unstableMux.Handle("/room_keys/version/{version}", putBackupKeysVersion).Methods(http.MethodPut)
|
||||||
|
unstableMux.Handle("/room_keys/version/{version}", deleteBackupKeysVersion).Methods(http.MethodDelete)
|
||||||
|
unstableMux.Handle("/room_keys/version", postNewBackupKeysVersion).Methods(http.MethodPost, http.MethodOptions)
|
||||||
|
|
||||||
// Inserting E2E Backup Keys
|
// Inserting E2E Backup Keys
|
||||||
|
|
||||||
// Bulk room and session
|
// Bulk room and session
|
||||||
r0mux.Handle("/room_keys/keys",
|
putBackupKeys := httputil.MakeAuthAPI("put_backup_keys", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
httputil.MakeAuthAPI("put_backup_keys", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
version := req.URL.Query().Get("version")
|
||||||
version := req.URL.Query().Get("version")
|
if version == "" {
|
||||||
if version == "" {
|
return util.JSONResponse{
|
||||||
return util.JSONResponse{
|
Code: 400,
|
||||||
Code: 400,
|
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
||||||
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var reqBody keyBackupSessionRequest
|
}
|
||||||
resErr := clientutil.UnmarshalJSONRequest(req, &reqBody)
|
var reqBody keyBackupSessionRequest
|
||||||
if resErr != nil {
|
resErr := clientutil.UnmarshalJSONRequest(req, &reqBody)
|
||||||
return *resErr
|
if resErr != nil {
|
||||||
}
|
return *resErr
|
||||||
return UploadBackupKeys(req, userAPI, device, version, &reqBody)
|
}
|
||||||
}),
|
return UploadBackupKeys(req, userAPI, device, version, &reqBody)
|
||||||
).Methods(http.MethodPut)
|
})
|
||||||
|
|
||||||
// Single room bulk session
|
// Single room bulk session
|
||||||
r0mux.Handle("/room_keys/keys/{roomID}",
|
putBackupKeysRoom := httputil.MakeAuthAPI("put_backup_keys_room", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
httputil.MakeAuthAPI("put_backup_keys_room", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
if err != nil {
|
||||||
if err != nil {
|
return util.ErrorResponse(err)
|
||||||
return util.ErrorResponse(err)
|
}
|
||||||
|
version := req.URL.Query().Get("version")
|
||||||
|
if version == "" {
|
||||||
|
return util.JSONResponse{
|
||||||
|
Code: 400,
|
||||||
|
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
||||||
}
|
}
|
||||||
version := req.URL.Query().Get("version")
|
}
|
||||||
if version == "" {
|
roomID := vars["roomID"]
|
||||||
return util.JSONResponse{
|
var reqBody keyBackupSessionRequest
|
||||||
Code: 400,
|
reqBody.Rooms = make(map[string]struct {
|
||||||
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
||||||
}
|
})
|
||||||
}
|
reqBody.Rooms[roomID] = struct {
|
||||||
roomID := vars["roomID"]
|
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
||||||
var reqBody keyBackupSessionRequest
|
}{
|
||||||
reqBody.Rooms = make(map[string]struct {
|
Sessions: map[string]userapi.KeyBackupSession{},
|
||||||
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
}
|
||||||
})
|
body := reqBody.Rooms[roomID]
|
||||||
reqBody.Rooms[roomID] = struct {
|
resErr := clientutil.UnmarshalJSONRequest(req, &body)
|
||||||
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
if resErr != nil {
|
||||||
}{
|
return *resErr
|
||||||
Sessions: map[string]userapi.KeyBackupSession{},
|
}
|
||||||
}
|
reqBody.Rooms[roomID] = body
|
||||||
body := reqBody.Rooms[roomID]
|
return UploadBackupKeys(req, userAPI, device, version, &reqBody)
|
||||||
resErr := clientutil.UnmarshalJSONRequest(req, &body)
|
})
|
||||||
if resErr != nil {
|
|
||||||
return *resErr
|
|
||||||
}
|
|
||||||
reqBody.Rooms[roomID] = body
|
|
||||||
return UploadBackupKeys(req, userAPI, device, version, &reqBody)
|
|
||||||
}),
|
|
||||||
).Methods(http.MethodPut)
|
|
||||||
// Single room, single session
|
// Single room, single session
|
||||||
r0mux.Handle("/room_keys/keys/{roomID}/{sessionID}",
|
putBackupKeysRoomSession := httputil.MakeAuthAPI("put_backup_keys_room_session", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
httputil.MakeAuthAPI("put_backup_keys_room_session", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
if err != nil {
|
||||||
if err != nil {
|
return util.ErrorResponse(err)
|
||||||
return util.ErrorResponse(err)
|
}
|
||||||
|
version := req.URL.Query().Get("version")
|
||||||
|
if version == "" {
|
||||||
|
return util.JSONResponse{
|
||||||
|
Code: 400,
|
||||||
|
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
||||||
}
|
}
|
||||||
version := req.URL.Query().Get("version")
|
}
|
||||||
if version == "" {
|
var reqBody userapi.KeyBackupSession
|
||||||
return util.JSONResponse{
|
resErr := clientutil.UnmarshalJSONRequest(req, &reqBody)
|
||||||
Code: 400,
|
if resErr != nil {
|
||||||
JSON: jsonerror.InvalidArgumentValue("version must be specified"),
|
return *resErr
|
||||||
}
|
}
|
||||||
}
|
roomID := vars["roomID"]
|
||||||
var reqBody userapi.KeyBackupSession
|
sessionID := vars["sessionID"]
|
||||||
resErr := clientutil.UnmarshalJSONRequest(req, &reqBody)
|
var keyReq keyBackupSessionRequest
|
||||||
if resErr != nil {
|
keyReq.Rooms = make(map[string]struct {
|
||||||
return *resErr
|
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
||||||
}
|
})
|
||||||
roomID := vars["roomID"]
|
keyReq.Rooms[roomID] = struct {
|
||||||
sessionID := vars["sessionID"]
|
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
||||||
var keyReq keyBackupSessionRequest
|
}{
|
||||||
keyReq.Rooms = make(map[string]struct {
|
Sessions: make(map[string]userapi.KeyBackupSession),
|
||||||
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
}
|
||||||
})
|
keyReq.Rooms[roomID].Sessions[sessionID] = reqBody
|
||||||
keyReq.Rooms[roomID] = struct {
|
return UploadBackupKeys(req, userAPI, device, version, &keyReq)
|
||||||
Sessions map[string]userapi.KeyBackupSession `json:"sessions"`
|
})
|
||||||
}{
|
|
||||||
Sessions: make(map[string]userapi.KeyBackupSession),
|
r0mux.Handle("/room_keys/keys", putBackupKeys).Methods(http.MethodPut)
|
||||||
}
|
r0mux.Handle("/room_keys/keys/{roomID}", putBackupKeysRoom).Methods(http.MethodPut)
|
||||||
keyReq.Rooms[roomID].Sessions[sessionID] = reqBody
|
r0mux.Handle("/room_keys/keys/{roomID}/{sessionID}", putBackupKeysRoomSession).Methods(http.MethodPut)
|
||||||
return UploadBackupKeys(req, userAPI, device, version, &keyReq)
|
|
||||||
}),
|
unstableMux.Handle("/room_keys/keys", putBackupKeys).Methods(http.MethodPut)
|
||||||
).Methods(http.MethodPut)
|
unstableMux.Handle("/room_keys/keys/{roomID}", putBackupKeysRoom).Methods(http.MethodPut)
|
||||||
|
unstableMux.Handle("/room_keys/keys/{roomID}/{sessionID}", putBackupKeysRoomSession).Methods(http.MethodPut)
|
||||||
|
|
||||||
// Querying E2E Backup Keys
|
// Querying E2E Backup Keys
|
||||||
|
|
||||||
r0mux.Handle("/room_keys/keys",
|
getBackupKeys := httputil.MakeAuthAPI("get_backup_keys", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
httputil.MakeAuthAPI("get_backup_keys", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), "", "")
|
||||||
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), "", "")
|
})
|
||||||
}),
|
|
||||||
).Methods(http.MethodGet, http.MethodOptions)
|
getBackupKeysRoom := httputil.MakeAuthAPI("get_backup_keys_room", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
r0mux.Handle("/room_keys/keys/{roomID}",
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
httputil.MakeAuthAPI("get_backup_keys_room", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
if err != nil {
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
return util.ErrorResponse(err)
|
||||||
if err != nil {
|
}
|
||||||
return util.ErrorResponse(err)
|
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), vars["roomID"], "")
|
||||||
}
|
})
|
||||||
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), vars["roomID"], "")
|
|
||||||
}),
|
getBackupKeysRoomSession := httputil.MakeAuthAPI("get_backup_keys_room_session", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
).Methods(http.MethodGet, http.MethodOptions)
|
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
||||||
r0mux.Handle("/room_keys/keys/{roomID}/{sessionID}",
|
if err != nil {
|
||||||
httputil.MakeAuthAPI("get_backup_keys_room_session", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
return util.ErrorResponse(err)
|
||||||
vars, err := httputil.URLDecodeMapValues(mux.Vars(req))
|
}
|
||||||
if err != nil {
|
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), vars["roomID"], vars["sessionID"])
|
||||||
return util.ErrorResponse(err)
|
})
|
||||||
}
|
|
||||||
return GetBackupKeys(req, userAPI, device, req.URL.Query().Get("version"), vars["roomID"], vars["sessionID"])
|
r0mux.Handle("/room_keys/keys", getBackupKeys).Methods(http.MethodGet, http.MethodOptions)
|
||||||
}),
|
r0mux.Handle("/room_keys/keys/{roomID}", getBackupKeysRoom).Methods(http.MethodGet, http.MethodOptions)
|
||||||
).Methods(http.MethodGet, http.MethodOptions)
|
r0mux.Handle("/room_keys/keys/{roomID}/{sessionID}", getBackupKeysRoomSession).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
|
||||||
|
unstableMux.Handle("/room_keys/keys", getBackupKeys).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
unstableMux.Handle("/room_keys/keys/{roomID}", getBackupKeysRoom).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
unstableMux.Handle("/room_keys/keys/{roomID}/{sessionID}", getBackupKeysRoomSession).Methods(http.MethodGet, http.MethodOptions)
|
||||||
|
|
||||||
// Deleting E2E Backup Keys
|
// Deleting E2E Backup Keys
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ package routing
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/matrix-org/dendrite/internal/httputil"
|
"github.com/matrix-org/dendrite/internal/httputil"
|
||||||
|
|
@ -29,13 +28,6 @@ import (
|
||||||
"github.com/matrix-org/util"
|
"github.com/matrix-org/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func unstableDefaultMiddleware(next http.Handler) http.Handler {
|
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
r.URL.Path = strings.Replace(r.URL.Path, "/unstable/", "/r0/", 1)
|
|
||||||
next.ServeHTTP(w, r)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup configures the given mux with sync-server listeners
|
// Setup configures the given mux with sync-server listeners
|
||||||
//
|
//
|
||||||
// Due to Setup being used to call many other functions, a gocyclo nolint is
|
// Due to Setup being used to call many other functions, a gocyclo nolint is
|
||||||
|
|
@ -48,9 +40,6 @@ func Setup(
|
||||||
cfg *config.SyncAPI,
|
cfg *config.SyncAPI,
|
||||||
) {
|
) {
|
||||||
r0mux := csMux.PathPrefix("/r0").Subrouter()
|
r0mux := csMux.PathPrefix("/r0").Subrouter()
|
||||||
unstableMux := csMux.PathPrefix("/unstable").Subrouter()
|
|
||||||
unstableMux.NotFoundHandler = r0mux
|
|
||||||
unstableMux.Use(unstableDefaultMiddleware)
|
|
||||||
|
|
||||||
// TODO: Add AS support for all handlers below.
|
// TODO: Add AS support for all handlers below.
|
||||||
r0mux.Handle("/sync", httputil.MakeAuthAPI("sync", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
r0mux.Handle("/sync", httputil.MakeAuthAPI("sync", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue