Added support multipart/form-data #109

This commit is contained in:
Aleksandr Didenko
2015-03-08 15:43:37 +01:00
committed by Javier Provecho Fernandez
parent 0f46ae2b81
commit 0fb7bed1c0
3 changed files with 30 additions and 11 deletions

View File

@ -25,14 +25,20 @@ type (
// XML binding
xmlBinding struct{}
// // form binding
// form binding
formBinding struct{}
// multipart form binding
multipartFormBinding struct{}
)
const MAX_MEMORY = 1 * 1024 * 1024
var (
JSON = jsonBinding{}
XML = xmlBinding{}
Form = formBinding{} // todo
JSON = jsonBinding{}
XML = xmlBinding{}
Form = formBinding{} // todo
MultipartForm = multipartFormBinding{}
)
func (_ jsonBinding) Bind(req *http.Request, obj interface{}) error {
@ -63,6 +69,16 @@ func (_ formBinding) Bind(req *http.Request, obj interface{}) error {
return Validate(obj)
}
func (_ multipartFormBinding) Bind(req *http.Request, obj interface{}) error {
if err := req.ParseMultipartForm(MAX_MEMORY); err != nil {
return err
}
if err := mapForm(obj, req.Form); err != nil {
return err
}
return Validate(obj)
}
func mapForm(ptr interface{}, form map[string][]string) error {
typ := reflect.TypeOf(ptr).Elem()
formStruct := reflect.ValueOf(ptr).Elem()