diff --git a/clientapi/routing/account_data.go b/clientapi/routing/account_data.go index 30e00f72..d57a6d37 100644 --- a/clientapi/routing/account_data.go +++ b/clientapi/routing/account_data.go @@ -33,13 +33,6 @@ func SaveAccountData( req *http.Request, accountDB *accounts.Database, device *authtypes.Device, userID string, roomID string, dataType string, syncProducer *producers.SyncAPIProducer, ) util.JSONResponse { - if req.Method != http.MethodPut { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad method"), - } - } - if userID != device.UserID { return util.JSONResponse{ Code: http.StatusForbidden, diff --git a/clientapi/routing/device.go b/clientapi/routing/device.go index cf6f24a7..c858e88a 100644 --- a/clientapi/routing/device.go +++ b/clientapi/routing/device.go @@ -106,13 +106,6 @@ func UpdateDeviceByID( req *http.Request, deviceDB *devices.Database, device *authtypes.Device, deviceID string, ) util.JSONResponse { - if req.Method != http.MethodPut { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad Method"), - } - } - localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID) if err != nil { return httputil.LogThenError(req, err) diff --git a/clientapi/routing/filter.go b/clientapi/routing/filter.go index 1ed91cd2..291a165b 100644 --- a/clientapi/routing/filter.go +++ b/clientapi/routing/filter.go @@ -32,12 +32,6 @@ import ( func GetFilter( req *http.Request, device *authtypes.Device, accountDB *accounts.Database, userID string, filterID string, ) util.JSONResponse { - if req.Method != http.MethodGet { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad method"), - } - } if userID != device.UserID { return util.JSONResponse{ Code: http.StatusForbidden, @@ -79,12 +73,6 @@ type filterResponse struct { func PutFilter( req *http.Request, device *authtypes.Device, accountDB *accounts.Database, userID string, ) util.JSONResponse { - if req.Method != http.MethodPost { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad method"), - } - } if userID != device.UserID { return util.JSONResponse{ Code: http.StatusForbidden, diff --git a/clientapi/routing/logout.go b/clientapi/routing/logout.go index d2013853..3294fbcd 100644 --- a/clientapi/routing/logout.go +++ b/clientapi/routing/logout.go @@ -20,7 +20,6 @@ import ( "github.com/matrix-org/dendrite/clientapi/auth/authtypes" "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" "github.com/matrix-org/dendrite/clientapi/httputil" - "github.com/matrix-org/dendrite/clientapi/jsonerror" "github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/util" ) @@ -29,13 +28,6 @@ import ( func Logout( req *http.Request, deviceDB *devices.Database, device *authtypes.Device, ) util.JSONResponse { - if req.Method != http.MethodPost { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad method"), - } - } - localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID) if err != nil { return httputil.LogThenError(req, err) diff --git a/clientapi/routing/profile.go b/clientapi/routing/profile.go index eb1acab7..034b9ac8 100644 --- a/clientapi/routing/profile.go +++ b/clientapi/routing/profile.go @@ -37,12 +37,6 @@ import ( func GetProfile( req *http.Request, accountDB *accounts.Database, userID string, asAPI appserviceAPI.AppServiceQueryAPI, ) util.JSONResponse { - if req.Method != http.MethodGet { - return util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.NotFound("Bad method"), - } - } profile, err := appserviceAPI.RetrieveUserProfile(req.Context(), userID, asAPI, accountDB) if err != nil { return httputil.LogThenError(req, err) diff --git a/federationapi/routing/routing.go b/federationapi/routing/routing.go index 16704e0b..ed32c890 100644 --- a/federationapi/routing/routing.go +++ b/federationapi/routing/routing.go @@ -65,7 +65,7 @@ func Setup( v2keysmux.Handle("/server/{keyID}", localKeys).Methods(http.MethodGet) v2keysmux.Handle("/server/", localKeys).Methods(http.MethodGet) - v1fedmux.Handle("/send/{txnID}/", common.MakeFedAPI( + v1fedmux.Handle("/send/{txnID}", common.MakeFedAPI( "federation_send", cfg.Matrix.ServerName, keys, func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse { vars, err := common.URLDecodeMapValues(mux.Vars(httpReq)) @@ -260,7 +260,7 @@ func Setup( }, )).Methods(http.MethodPost) - v1fedmux.Handle("/backfill/{roomID}/", common.MakeFedAPI( + v1fedmux.Handle("/backfill/{roomID}", common.MakeFedAPI( "federation_backfill", cfg.Matrix.ServerName, keys, func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest) util.JSONResponse { vars, err := common.URLDecodeMapValues(mux.Vars(httpReq)) diff --git a/mediaapi/routing/download.go b/mediaapi/routing/download.go index 38c43636..80ad8418 100644 --- a/mediaapi/routing/download.go +++ b/mediaapi/routing/download.go @@ -55,7 +55,7 @@ type downloadRequest struct { Logger *log.Entry } -// Download implements /download amd /thumbnail +// Download implements GET /download and GET /thumbnail // Files from this server (i.e. origin == cfg.ServerName) are served directly // Files from remote servers (i.e. origin != cfg.ServerName) are cached locally. // If they are present in the cache, they are served directly. @@ -107,14 +107,6 @@ func Download( } // request validation - if req.Method != http.MethodGet { - dReq.jsonErrorResponse(w, util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.Unknown("request method must be GET"), - }) - return - } - if resErr := dReq.Validate(); resErr != nil { dReq.jsonErrorResponse(w, *resErr) return diff --git a/mediaapi/routing/upload.go b/mediaapi/routing/upload.go index 1051e0e0..2cb0d875 100644 --- a/mediaapi/routing/upload.go +++ b/mediaapi/routing/upload.go @@ -48,7 +48,7 @@ type uploadResponse struct { ContentURI string `json:"content_uri"` } -// Upload implements /upload +// Upload implements POST /upload // This endpoint involves uploading potentially significant amounts of data to the homeserver. // This implementation supports a configurable maximum file size limit in bytes. If a user tries to upload more than this, they will receive an error that their upload is too large. // Uploaded files are processed piece-wise to avoid DoS attacks which would starve the server of memory. @@ -75,13 +75,6 @@ func Upload(req *http.Request, cfg *config.Dendrite, db *storage.Database, activ // all the metadata about the media being uploaded. // Returns either an uploadRequest or an error formatted as a util.JSONResponse func parseAndValidateRequest(req *http.Request, cfg *config.Dendrite) (*uploadRequest, *util.JSONResponse) { - if req.Method != http.MethodPost { - return nil, &util.JSONResponse{ - Code: http.StatusMethodNotAllowed, - JSON: jsonerror.Unknown("HTTP request method must be POST."), - } - } - r := &uploadRequest{ MediaMetadata: &types.MediaMetadata{ Origin: cfg.Matrix.ServerName, diff --git a/testfile b/testfile index bdd421e2..8a8225a8 100644 --- a/testfile +++ b/testfile @@ -147,3 +147,5 @@ Inbound federation can receive room-join requests Typing events appear in initial sync Typing events appear in incremental sync Typing events appear in gapped sync +Inbound federation of state requires event_id as a mandatory paramater +Inbound federation of state_ids requires event_id as a mandatory paramater