bindBody issue

This commit is contained in:
Rinat Almakhov 2022-09-05 13:12:20 +02:00
parent 2c9e5fe47a
commit 69e1831a5d

View File

@ -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)
}