mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #2191 from swordqiu/hotfix/qj-qcloud-temp-url-error
fix: qcloud/aws temp url not working
This commit is contained in:
@@ -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, "/") {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user