Adds additional bindings for multipart and form

This commit is contained in:
Manu Mtz-Almeida
2015-07-03 04:20:00 +02:00
parent 8f3047814e
commit 4194adce4c
3 changed files with 74 additions and 3 deletions

View File

@ -7,6 +7,8 @@ package binding
import "net/http"
type formBinding struct{}
type formPostBinding struct{}
type formMultipartBinding struct{}
func (_ formBinding) Name() string {
return "form"
@ -22,3 +24,31 @@ func (_ formBinding) Bind(req *http.Request, obj interface{}) error {
}
return validate(obj)
}
func (_ formPostBinding) Name() string {
return "form-urlencoded"
}
func (_ formPostBinding) Bind(req *http.Request, obj interface{}) error {
if err := req.ParseForm(); err != nil {
return err
}
if err := mapForm(obj, req.PostForm); err != nil {
return err
}
return validate(obj)
}
func (_ formMultipartBinding) Name() string {
return "multipart/form-data"
}
func (_ formMultipartBinding) Bind(req *http.Request, obj interface{}) error {
if err := req.ParseMultipartForm(32 << 10); err != nil {
return err
}
if err := mapForm(obj, req.MultipartForm.Value); err != nil {
return err
}
return validate(obj)
}