Merge pull request #2191 from swordqiu/hotfix/qj-qcloud-temp-url-error

fix: qcloud/aws temp url not working
This commit is contained in:
yunion-ci-robot
2019-08-09 00:01:59 +08:00
committed by GitHub
5 changed files with 35 additions and 24 deletions
+11
View File
@@ -228,6 +228,17 @@ func GetIObjects(bucket ICloudBucket, objectPrefix string, isRecursive bool) ([]
return ret, nil
}
func GetIObject(bucket ICloudBucket, objectPrefix string) (ICloudObject, error) {
objects, err := GetIObjects(bucket, objectPrefix, true)
if err != nil {
return nil, errors.Wrap(err, "GetIObjects")
}
if len(objects) > 0 && objects[0].GetKey() == objectPrefix {
return objects[0], nil
}
return nil, ErrNotFound
}
func Makedir(ctx context.Context, bucket ICloudBucket, key string) error {
segs := make([]string, 0)
for _, seg := range strings.Split(key, "/") {
+14 -12
View File
@@ -763,14 +763,15 @@ func (bucket *SBucket) PerformAcl(
return nil, httperrors.NewInternalServerError("syncWithCloudBucket error %s", err)
}
} else {
objects, err := iBucket.GetIObjects(objKey, false)
object, err := cloudprovider.GetIObject(iBucket, objKey)
if err != nil {
return nil, httperrors.NewInternalServerError("iBucket.GetIObjects error %s", err)
if err == cloudprovider.ErrNotFound {
return nil, httperrors.NewResourceNotFoundError("object %s not found", objKey)
} else {
return nil, httperrors.NewInternalServerError("iBucket.GetIObjects error %s", err)
}
}
if len(objects) == 0 {
return nil, httperrors.NewResourceNotFoundError("object %s not found", objKey)
}
err = objects[0].SetAcl(cloudprovider.TBucketACLType(aclStr))
err = object.SetAcl(cloudprovider.TBucketACLType(aclStr))
if err != nil {
return nil, httperrors.NewInternalServerError("setAcl error %s", err)
}
@@ -841,14 +842,15 @@ func (bucket *SBucket) GetDetailsAcl(
if len(objKey) == 0 {
acl = iBucket.GetAcl()
} else {
objects, err := iBucket.GetIObjects(objKey, true)
object, err := cloudprovider.GetIObject(iBucket, objKey)
if err != nil {
return nil, httperrors.NewInternalServerError("iBucket.GetIObjects error %s", err)
if err == cloudprovider.ErrNotFound {
return nil, httperrors.NewNotFoundError("object %s not found", objKey)
} else {
return nil, httperrors.NewInternalServerError("iBucket.GetIObjects error %s", err)
}
}
if len(objects) == 0 {
return nil, httperrors.NewNotFoundError("object %s not found", objKey)
}
acl = objects[0].GetAcl()
acl = object.GetAcl()
}
ret := jsonutils.NewDict()
ret.Add(jsonutils.NewString(string(acl)), "acl")
+5 -1
View File
@@ -277,5 +277,9 @@ func (b *SBucket) GetTempUrl(method string, key string, expire time.Duration) (s
default:
return "", errors.Error("unsupported method")
}
return request.Presign(expire)
url, _, err := request.PresignRequest(expire)
if err != nil {
return "", errors.Wrap(err, "request.PresignRequest")
}
return url, nil
}
+4 -10
View File
@@ -229,14 +229,11 @@ func S3Shell() {
if err != nil {
return err
}
objects, err := bucket.GetIObjects(args.KEY, false)
object, err := cloudprovider.GetIObject(bucket, args.KEY)
if err != nil {
return err
}
if len(objects) == 0 {
return cloudprovider.ErrNotFound
}
fmt.Println(objects[0].GetAcl())
fmt.Println(object.GetAcl())
return nil
})
@@ -250,14 +247,11 @@ func S3Shell() {
if err != nil {
return err
}
objects, err := bucket.GetIObjects(args.KEY, false)
object, err := cloudprovider.GetIObject(bucket, args.KEY)
if err != nil {
return err
}
if len(objects) == 0 {
return cloudprovider.ErrNotFound
}
err = objects[0].SetAcl(cloudprovider.TBucketACLType(args.ACL))
err = object.SetAcl(cloudprovider.TBucketACLType(args.ACL))
if err != nil {
return err
}
+1 -1
View File
@@ -256,8 +256,8 @@ func (b *SBucket) GetTempUrl(method string, key string, expire time.Duration) (s
return "", errors.Wrap(err, "GetCosClient")
}
url, err := coscli.Object.GetPresignedURL(context.Background(), method, key,
b.region.client.SecretKey,
b.region.client.SecretID,
b.region.client.SecretKey,
expire, nil)
if err != nil {
return "", errors.Wrap(err, "coscli.Object.GetPresignedURL")