gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 73bfb5fbff53e920b7b87d937e4dfd8525f03be2
parent 70357a770f7e84eed1d3d6a0dfc2ce9f30e5c5be
Author: Umar Getagazov <umar@handlerug.me>
Date:   Mon, 19 Jun 2023 10:58:58 +0300

[bugfix] Parse POST-style forms in the list member removal endpoint (#1903)


Diffstat:
Minternal/api/client/lists/listaccountsremove.go | 12+++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/internal/api/client/lists/listaccountsremove.go b/internal/api/client/lists/listaccountsremove.go @@ -100,7 +100,17 @@ func (m *Module) ListAccountsDELETEHandler(c *gin.Context) { } form := &apimodel.ListAccountsChangeRequest{} - if err := c.ShouldBind(form); err != nil { + + // XXX: Sending a body with a DELETE request is undefined. Ruby on Rails parses + // it fine. Go's (*http.Request).ParseForm only parses POST-style forms for POST, + // PUT, and PATCH request methods. Change the method until we're done with + // parsing in order to be compatible with Mastodon's client API conventions. + oldMethod := c.Request.Method + c.Request.Method = "POST" + err = c.ShouldBind(form) + c.Request.Method = oldMethod + + if err != nil { apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGetV1) return }