From 69e1831a5d3233b0dda5fb092bc4943c0e8bf25d Mon Sep 17 00:00:00 2001 From: Rinat Almakhov Date: Mon, 5 Sep 2022 13:12:20 +0200 Subject: [PATCH] bindBody issue --- binding/form.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/binding/form.go b/binding/form.go index b17352ba..5c8b9723 100644 --- a/binding/form.go +++ b/binding/form.go @@ -7,6 +7,7 @@ package binding import ( "errors" "net/http" + "net/url" ) const defaultMemory = 32 << 20 @@ -32,6 +33,17 @@ func (formBinding) Bind(req *http.Request, obj any) error { return validate(obj) } +func (formBinding) BindBody(body []byte, obj any) error { + form, err := url.ParseQuery(string(body)) + if err != nil { + return err + } + if err := mapForm(obj, form); err != nil { + return err + } + return validate(obj) +} + func (formPostBinding) Name() string { return "form-urlencoded" } @@ -46,6 +58,17 @@ func (formPostBinding) Bind(req *http.Request, obj any) error { return validate(obj) } +func (formPostBinding) BindBody(body []byte, obj any) error { + form, err := url.ParseQuery(string(body)) + if err != nil { + return err + } + if err := mapForm(obj, form); err != nil { + return err + } + return validate(obj) +} + func (formMultipartBinding) Name() string { return "multipart/form-data" } @@ -60,3 +83,14 @@ func (formMultipartBinding) Bind(req *http.Request, obj any) error { return validate(obj) } + +func (formMultipartBinding) BindBody(body []byte, obj any) error { + form, err := url.ParseQuery(string(body)) + if err != nil { + return err + } + if err := mapForm(obj, form); err != nil { + return err + } + return validate(obj) +}