Allow arbitrary number of file uploads (#554)
Parameter definition for file upload on swagger.yaml was removed since go-swagger doesn't support multiple upload of files. Implementation was done instead on user_objects.go file. Co-authored-by: Daniel Valdivia <hola@danielvaldivia.com>
This commit is contained in:
@@ -23,15 +23,12 @@ package user_api
|
||||
// Editing this file might prove futile when you re-run the swagger generate command
|
||||
|
||||
import (
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-openapi/errors"
|
||||
"github.com/go-openapi/runtime"
|
||||
"github.com/go-openapi/runtime/middleware"
|
||||
"github.com/go-openapi/strfmt"
|
||||
"github.com/go-openapi/validate"
|
||||
)
|
||||
|
||||
// NewPostBucketsBucketNameObjectsUploadParams creates a new PostBucketsBucketNameObjectsUploadParams object
|
||||
@@ -56,15 +53,9 @@ type PostBucketsBucketNameObjectsUploadParams struct {
|
||||
*/
|
||||
BucketName string
|
||||
/*
|
||||
Required: true
|
||||
In: query
|
||||
*/
|
||||
Prefix string
|
||||
/*
|
||||
Required: true
|
||||
In: formData
|
||||
*/
|
||||
Upfile io.ReadCloser
|
||||
Prefix *string
|
||||
}
|
||||
|
||||
// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
|
||||
@@ -78,14 +69,6 @@ func (o *PostBucketsBucketNameObjectsUploadParams) BindRequest(r *http.Request,
|
||||
|
||||
qs := runtime.Values(r.URL.Query())
|
||||
|
||||
if err := r.ParseMultipartForm(32 << 20); err != nil {
|
||||
if err != http.ErrNotMultipart {
|
||||
return errors.New(400, "%v", err)
|
||||
} else if err := r.ParseForm(); err != nil {
|
||||
return errors.New(400, "%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
rBucketName, rhkBucketName, _ := route.Params.GetOK("bucket_name")
|
||||
if err := o.bindBucketName(rBucketName, rhkBucketName, route.Formats); err != nil {
|
||||
res = append(res, err)
|
||||
@@ -96,16 +79,6 @@ func (o *PostBucketsBucketNameObjectsUploadParams) BindRequest(r *http.Request,
|
||||
res = append(res, err)
|
||||
}
|
||||
|
||||
upfile, upfileHeader, err := r.FormFile("upfile")
|
||||
if err != nil {
|
||||
res = append(res, errors.New(400, "reading file %q failed: %v", "upfile", err))
|
||||
} else if err := o.bindUpfile(upfile, upfileHeader); err != nil {
|
||||
// Required: true
|
||||
res = append(res, err)
|
||||
} else {
|
||||
o.Upfile = &runtime.File{Data: upfile, Header: upfileHeader}
|
||||
}
|
||||
|
||||
if len(res) > 0 {
|
||||
return errors.CompositeValidationError(res...)
|
||||
}
|
||||
@@ -129,28 +102,18 @@ func (o *PostBucketsBucketNameObjectsUploadParams) bindBucketName(rawData []stri
|
||||
|
||||
// bindPrefix binds and validates parameter Prefix from query.
|
||||
func (o *PostBucketsBucketNameObjectsUploadParams) bindPrefix(rawData []string, hasKey bool, formats strfmt.Registry) error {
|
||||
if !hasKey {
|
||||
return errors.Required("prefix", "query", rawData)
|
||||
}
|
||||
var raw string
|
||||
if len(rawData) > 0 {
|
||||
raw = rawData[len(rawData)-1]
|
||||
}
|
||||
|
||||
// Required: true
|
||||
// Required: false
|
||||
// AllowEmptyValue: false
|
||||
if err := validate.RequiredString("prefix", "query", raw); err != nil {
|
||||
return err
|
||||
if raw == "" { // empty values pass all other validations
|
||||
return nil
|
||||
}
|
||||
|
||||
o.Prefix = raw
|
||||
o.Prefix = &raw
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// bindUpfile binds file parameter Upfile.
|
||||
//
|
||||
// The only supported validations on files are MinLength and MaxLength
|
||||
func (o *PostBucketsBucketNameObjectsUploadParams) bindUpfile(file multipart.File, header *multipart.FileHeader) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import (
|
||||
type PostBucketsBucketNameObjectsUploadURL struct {
|
||||
BucketName string
|
||||
|
||||
Prefix string
|
||||
Prefix *string
|
||||
|
||||
_basePath string
|
||||
// avoid unkeyed usage
|
||||
@@ -76,7 +76,10 @@ func (o *PostBucketsBucketNameObjectsUploadURL) Build() (*url.URL, error) {
|
||||
|
||||
qs := make(url.Values)
|
||||
|
||||
prefixQ := o.Prefix
|
||||
var prefixQ string
|
||||
if o.Prefix != nil {
|
||||
prefixQ = *o.Prefix
|
||||
}
|
||||
if prefixQ != "" {
|
||||
qs.Set("prefix", prefixQ)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user