Fix object download (#466)

If an object is within a folder the object downloaded now only has the object's name.
Also, it now supports object version downloading.
This commit is contained in:
Cesar N
2020-12-03 11:37:53 -06:00
committed by GitHub
parent 726bfe623c
commit d15472f417
9 changed files with 43 additions and 42 deletions

View File

@@ -59,10 +59,9 @@ type DownloadObjectParams struct {
*/
Prefix string
/*
Required: true
In: query
*/
VersionID string
VersionID *string
}
// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
@@ -135,21 +134,18 @@ func (o *DownloadObjectParams) bindPrefix(rawData []string, hasKey bool, formats
// bindVersionID binds and validates parameter VersionID from query.
func (o *DownloadObjectParams) bindVersionID(rawData []string, hasKey bool, formats strfmt.Registry) error {
if !hasKey {
return errors.Required("version_id", "query", rawData)
}
var raw string
if len(rawData) > 0 {
raw = rawData[len(rawData)-1]
}
// Required: true
// Required: false
// AllowEmptyValue: false
if err := validate.RequiredString("version_id", "query", raw); err != nil {
return err
if raw == "" { // empty values pass all other validations
return nil
}
o.VersionID = raw
o.VersionID = &raw
return nil
}

View File

@@ -34,7 +34,7 @@ type DownloadObjectURL struct {
BucketName string
Prefix string
VersionID string
VersionID *string
_basePath string
// avoid unkeyed usage
@@ -82,7 +82,10 @@ func (o *DownloadObjectURL) Build() (*url.URL, error) {
qs.Set("prefix", prefixQ)
}
versionIDQ := o.VersionID
var versionIDQ string
if o.VersionID != nil {
versionIDQ = *o.VersionID
}
if versionIDQ != "" {
qs.Set("version_id", versionIDQ)
}