summaryrefslogtreecommitdiff
path: root/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go')
-rw-r--r--vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go32
1 files changed, 20 insertions, 12 deletions
diff --git a/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go b/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go
index f85a1aa60..4ebe83263 100644
--- a/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go
+++ b/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go
@@ -1,4 +1,4 @@
-// Copyright 2019 Gin Core Team. All rights reserved.
+// Copyright 2019 Gin Core Team. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
@@ -15,8 +15,16 @@ type multipartRequest http.Request
var _ setter = (*multipartRequest)(nil)
+var (
+ // ErrMultiFileHeader multipart.FileHeader invalid
+ ErrMultiFileHeader = errors.New("unsupported field type for multipart.FileHeader")
+
+ // ErrMultiFileHeaderLenInvalid array for []*multipart.FileHeader len invalid
+ ErrMultiFileHeaderLenInvalid = errors.New("unsupported len of array for []*multipart.FileHeader")
+)
+
// TrySet tries to set a value by the multipart request with the binding a form file
-func (r *multipartRequest) TrySet(value reflect.Value, field reflect.StructField, key string, opt setOptions) (isSetted bool, err error) {
+func (r *multipartRequest) TrySet(value reflect.Value, field reflect.StructField, key string, opt setOptions) (bool, error) {
if files := r.MultipartForm.File[key]; len(files) != 0 {
return setByMultipartFormFile(value, field, files)
}
@@ -24,7 +32,7 @@ func (r *multipartRequest) TrySet(value reflect.Value, field reflect.StructField
return setByForm(value, field, r.MultipartForm.Value, key, opt)
}
-func setByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSetted bool, err error) {
+func setByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {
switch value.Kind() {
case reflect.Ptr:
switch value.Interface().(type) {
@@ -40,26 +48,26 @@ func setByMultipartFormFile(value reflect.Value, field reflect.StructField, file
}
case reflect.Slice:
slice := reflect.MakeSlice(value.Type(), len(files), len(files))
- isSetted, err = setArrayOfMultipartFormFiles(slice, field, files)
- if err != nil || !isSetted {
- return isSetted, err
+ isSet, err = setArrayOfMultipartFormFiles(slice, field, files)
+ if err != nil || !isSet {
+ return isSet, err
}
value.Set(slice)
return true, nil
case reflect.Array:
return setArrayOfMultipartFormFiles(value, field, files)
}
- return false, errors.New("unsupported field type for multipart.FileHeader")
+ return false, ErrMultiFileHeader
}
-func setArrayOfMultipartFormFiles(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSetted bool, err error) {
+func setArrayOfMultipartFormFiles(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {
if value.Len() != len(files) {
- return false, errors.New("unsupported len of array for []*multipart.FileHeader")
+ return false, ErrMultiFileHeaderLenInvalid
}
for i := range files {
- setted, err := setByMultipartFormFile(value.Index(i), field, files[i:i+1])
- if err != nil || !setted {
- return setted, err
+ set, err := setByMultipartFormFile(value.Index(i), field, files[i:i+1])
+ if err != nil || !set {
+ return set, err
}
}
return true, nil