vendor: update qingstor

dep ensure needed to do this, probably after various vendor merges
This commit is contained in:
Nick Craig-Wood 2017-08-08 10:18:33 +01:00
parent ec2ea37ad2
commit c1bfdd893f
50 changed files with 777 additions and 229 deletions

View file

@ -32,12 +32,19 @@ before_install:
mv linux-amd64 glide-v0.12.3;
fi
- pushd glide-v0.12.3 && sudo cp glide /usr/local/bin && popd
- if [[ ! -d "./snips-v0.1.0" ]]; then
wget https://github.com/yunify/snips/releases/download/v0.1.0/snips-v0.1.0-linux_amd64.tar.gz &&
mkdir snips-v0.1.0 &&
pushd snips-v0.1.0 &&
tar -vxzf ../snips-v0.1.0-linux_amd64.tar.gz &&
popd;
fi
- pushd snips-v0.1.0 && sudo cp snips /usr/local/bin && popd
- popd
- /usr/local/bin/make --version
- /usr/local/bin/glide --version
install:
- go get -u github.com/yunify/snips
- go get -u github.com/golang/lint/golint;
- glide install

View file

@ -1,6 +1,12 @@
# Change Log
All notable changes to QingStor SDK for Go will be documented in this file.
## [v2.2.6] - 2017-07-21
### Fixed
- Fix concurrency issue in object related operations.
## [v2.2.5] - 2017-05-22
### Fixed
@ -94,6 +100,7 @@ All notable changes to QingStor SDK for Go will be documented in this file.
- QingStor SDK for the Go programming language.
[v2.2.6]: https://github.com/yunify/qingstor-sdk-go/compare/v2.2.5...v2.2.6
[v2.2.5]: https://github.com/yunify/qingstor-sdk-go/compare/v2.2.4...v2.2.5
[v2.2.4]: https://github.com/yunify/qingstor-sdk-go/compare/v2.2.3...v2.2.4
[v2.2.3]: https://github.com/yunify/qingstor-sdk-go/compare/v2.2.2...v2.2.3

View file

@ -1,6 +1,11 @@
hash: 2e6b1ed4a2ee0638abc2e819ac3c247eaf80fa0f2053cfc41eecf883054c6032
updated: 2017-05-22T14:58:58.927797848+08:00
updated: 2017-07-20T20:14:05.143145325+08:00
imports:
- name: github.com/DATA-DOG/godog
version: 70f777599da0f5de682b8848d356611c1738b695
subpackages:
- colors
- gherkin
- name: github.com/pengsrc/go-shared
version: 454950d6a0782c34427d4f29b46c6bf447256f20
subpackages:
@ -8,8 +13,8 @@ imports:
- convert
- json
- yaml
- name: github.com/Sirupsen/logrus
version: d26492970760ca5d33129d2d799e34be5c4782eb
- name: github.com/sirupsen/logrus
version: 00386b3fbd637582f90cb17482dc3087646c0ac2
- name: golang.org/x/sys
version: f3918c30c5c2cb527c0b071a27c35120a6c0719a
repo: https://github.com/golang/sys.git

View file

@ -25,7 +25,7 @@ import (
"strings"
"time"
"github.com/Sirupsen/logrus"
"github.com/sirupsen/logrus"
)
var instance *logrus.Logger

View file

@ -19,6 +19,7 @@ package service
import (
"fmt"
"io"
"net/http"
"time"
"github.com/yunify/qingstor-sdk-go/config"
@ -29,6 +30,7 @@ import (
var _ fmt.State
var _ io.Reader
var _ http.Header
var _ time.Time
var _ config.Config
@ -62,7 +64,7 @@ func (s *Bucket) Delete() (*DeleteBucketOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -71,9 +73,11 @@ func (s *Bucket) Delete() (*DeleteBucketOutput, error) {
// DeleteRequest creates request and output object of DeleteBucket.
func (s *Bucket) DeleteRequest() (*request.Request, *DeleteBucketOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "DELETE Bucket",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>",
@ -112,7 +116,7 @@ func (s *Bucket) DeleteCORS() (*DeleteBucketCORSOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -121,9 +125,11 @@ func (s *Bucket) DeleteCORS() (*DeleteBucketCORSOutput, error) {
// DeleteCORSRequest creates request and output object of DeleteBucketCORS.
func (s *Bucket) DeleteCORSRequest() (*request.Request, *DeleteBucketCORSOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "DELETE Bucket CORS",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>?cors",
@ -162,7 +168,7 @@ func (s *Bucket) DeleteExternalMirror() (*DeleteBucketExternalMirrorOutput, erro
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -171,9 +177,11 @@ func (s *Bucket) DeleteExternalMirror() (*DeleteBucketExternalMirrorOutput, erro
// DeleteExternalMirrorRequest creates request and output object of DeleteBucketExternalMirror.
func (s *Bucket) DeleteExternalMirrorRequest() (*request.Request, *DeleteBucketExternalMirrorOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "DELETE Bucket External Mirror",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>?mirror",
@ -212,7 +220,7 @@ func (s *Bucket) DeletePolicy() (*DeleteBucketPolicyOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -221,9 +229,11 @@ func (s *Bucket) DeletePolicy() (*DeleteBucketPolicyOutput, error) {
// DeletePolicyRequest creates request and output object of DeleteBucketPolicy.
func (s *Bucket) DeletePolicyRequest() (*request.Request, *DeleteBucketPolicyOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "DELETE Bucket Policy",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>?policy",
@ -262,7 +272,7 @@ func (s *Bucket) DeleteMultipleObjects(input *DeleteMultipleObjectsInput) (*Dele
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -275,9 +285,11 @@ func (s *Bucket) DeleteMultipleObjectsRequest(input *DeleteMultipleObjectsInput)
input = &DeleteMultipleObjectsInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "Delete Multiple Objects",
RequestMethod: "POST",
RequestURI: "/<bucket-name>?delete",
@ -351,7 +363,7 @@ func (s *Bucket) GetACL() (*GetBucketACLOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -360,9 +372,11 @@ func (s *Bucket) GetACL() (*GetBucketACLOutput, error) {
// GetACLRequest creates request and output object of GetBucketACL.
func (s *Bucket) GetACLRequest() (*request.Request, *GetBucketACLOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket ACL",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?acl",
@ -406,7 +420,7 @@ func (s *Bucket) GetCORS() (*GetBucketCORSOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -415,9 +429,11 @@ func (s *Bucket) GetCORS() (*GetBucketCORSOutput, error) {
// GetCORSRequest creates request and output object of GetBucketCORS.
func (s *Bucket) GetCORSRequest() (*request.Request, *GetBucketCORSOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket CORS",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?cors",
@ -459,7 +475,7 @@ func (s *Bucket) GetExternalMirror() (*GetBucketExternalMirrorOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -468,9 +484,11 @@ func (s *Bucket) GetExternalMirror() (*GetBucketExternalMirrorOutput, error) {
// GetExternalMirrorRequest creates request and output object of GetBucketExternalMirror.
func (s *Bucket) GetExternalMirrorRequest() (*request.Request, *GetBucketExternalMirrorOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket External Mirror",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?mirror",
@ -512,7 +530,7 @@ func (s *Bucket) GetPolicy() (*GetBucketPolicyOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -521,9 +539,11 @@ func (s *Bucket) GetPolicy() (*GetBucketPolicyOutput, error) {
// GetPolicyRequest creates request and output object of GetBucketPolicy.
func (s *Bucket) GetPolicyRequest() (*request.Request, *GetBucketPolicyOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket Policy",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?policy",
@ -565,7 +585,7 @@ func (s *Bucket) GetStatistics() (*GetBucketStatisticsOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -574,9 +594,11 @@ func (s *Bucket) GetStatistics() (*GetBucketStatisticsOutput, error) {
// GetStatisticsRequest creates request and output object of GetBucketStatistics.
func (s *Bucket) GetStatisticsRequest() (*request.Request, *GetBucketStatisticsOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket Statistics",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?stats",
@ -631,7 +653,7 @@ func (s *Bucket) Head() (*HeadBucketOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -640,9 +662,11 @@ func (s *Bucket) Head() (*HeadBucketOutput, error) {
// HeadRequest creates request and output object of HeadBucket.
func (s *Bucket) HeadRequest() (*request.Request, *HeadBucketOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "HEAD Bucket",
RequestMethod: "HEAD",
RequestURI: "/<bucket-name>",
@ -681,7 +705,7 @@ func (s *Bucket) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMu
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -694,9 +718,11 @@ func (s *Bucket) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (
input = &ListMultipartUploadsInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "List Multipart Uploads",
RequestMethod: "GET",
RequestURI: "/<bucket-name>?uploads",
@ -770,7 +796,7 @@ func (s *Bucket) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -783,9 +809,11 @@ func (s *Bucket) ListObjectsRequest(input *ListObjectsInput) (*request.Request,
input = &ListObjectsInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Bucket (List Objects)",
RequestMethod: "GET",
RequestURI: "/<bucket-name>",
@ -861,7 +889,7 @@ func (s *Bucket) Put() (*PutBucketOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -870,9 +898,11 @@ func (s *Bucket) Put() (*PutBucketOutput, error) {
// PutRequest creates request and output object of PutBucket.
func (s *Bucket) PutRequest() (*request.Request, *PutBucketOutput, error) {
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Bucket",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>",
@ -911,7 +941,7 @@ func (s *Bucket) PutACL(input *PutBucketACLInput) (*PutBucketACLOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -924,9 +954,11 @@ func (s *Bucket) PutACLRequest(input *PutBucketACLInput) (*request.Request, *Put
input = &PutBucketACLInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Bucket ACL",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>?acl",
@ -993,7 +1025,7 @@ func (s *Bucket) PutCORS(input *PutBucketCORSInput) (*PutBucketCORSOutput, error
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -1006,9 +1038,11 @@ func (s *Bucket) PutCORSRequest(input *PutBucketCORSInput) (*request.Request, *P
input = &PutBucketCORSInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Bucket CORS",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>?cors",
@ -1075,7 +1109,7 @@ func (s *Bucket) PutExternalMirror(input *PutBucketExternalMirrorInput) (*PutBuc
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -1088,9 +1122,11 @@ func (s *Bucket) PutExternalMirrorRequest(input *PutBucketExternalMirrorInput) (
input = &PutBucketExternalMirrorInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Bucket External Mirror",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>?mirror",
@ -1149,7 +1185,7 @@ func (s *Bucket) PutPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput,
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -1162,9 +1198,11 @@ func (s *Bucket) PutPolicyRequest(input *PutBucketPolicyInput) (*request.Request
input = &PutBucketPolicyInput{}
}
properties := *s.Properties
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Bucket Policy",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>?policy",

View file

@ -19,6 +19,7 @@ package service
import (
"fmt"
"io"
"net/http"
"time"
"github.com/yunify/qingstor-sdk-go/config"
@ -29,6 +30,7 @@ import (
var _ fmt.State
var _ io.Reader
var _ http.Header
var _ time.Time
var _ config.Config
@ -46,7 +48,7 @@ func (s *Bucket) AbortMultipartUpload(objectKey string, input *AbortMultipartUpl
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -59,9 +61,13 @@ func (s *Bucket) AbortMultipartUploadRequest(objectKey string, input *AbortMulti
input = &AbortMultipartUploadInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "Abort Multipart Upload",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>/<object-key>",
@ -70,8 +76,6 @@ func (s *Bucket) AbortMultipartUploadRequest(objectKey string, input *AbortMulti
},
}
s.Properties.ObjectKey = &objectKey
x := &AbortMultipartUploadOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -122,7 +126,7 @@ func (s *Bucket) CompleteMultipartUpload(objectKey string, input *CompleteMultip
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -135,9 +139,13 @@ func (s *Bucket) CompleteMultipartUploadRequest(objectKey string, input *Complet
input = &CompleteMultipartUploadInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "Complete multipart upload",
RequestMethod: "POST",
RequestURI: "/<bucket-name>/<object-key>",
@ -146,8 +154,6 @@ func (s *Bucket) CompleteMultipartUploadRequest(objectKey string, input *Complet
},
}
s.Properties.ObjectKey = &objectKey
x := &CompleteMultipartUploadOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -217,7 +223,7 @@ func (s *Bucket) DeleteObject(objectKey string) (*DeleteObjectOutput, error) {
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -226,9 +232,13 @@ func (s *Bucket) DeleteObject(objectKey string) (*DeleteObjectOutput, error) {
// DeleteObjectRequest creates request and output object of DeleteObject.
func (s *Bucket) DeleteObjectRequest(objectKey string) (*request.Request, *DeleteObjectOutput, error) {
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "DELETE Object",
RequestMethod: "DELETE",
RequestURI: "/<bucket-name>/<object-key>",
@ -237,8 +247,6 @@ func (s *Bucket) DeleteObjectRequest(objectKey string) (*request.Request, *Delet
},
}
s.Properties.ObjectKey = &objectKey
x := &DeleteObjectOutput{}
r, err := request.New(o, nil, x)
if err != nil {
@ -269,7 +277,7 @@ func (s *Bucket) GetObject(objectKey string, input *GetObjectInput) (*GetObjectO
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -282,9 +290,13 @@ func (s *Bucket) GetObjectRequest(objectKey string, input *GetObjectInput) (*req
input = &GetObjectInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "GET Object",
RequestMethod: "GET",
RequestURI: "/<bucket-name>/<object-key>",
@ -296,8 +308,6 @@ func (s *Bucket) GetObjectRequest(objectKey string, input *GetObjectInput) (*req
},
}
s.Properties.ObjectKey = &objectKey
x := &GetObjectOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -379,7 +389,7 @@ func (s *Bucket) HeadObject(objectKey string, input *HeadObjectInput) (*HeadObje
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -392,9 +402,13 @@ func (s *Bucket) HeadObjectRequest(objectKey string, input *HeadObjectInput) (*r
input = &HeadObjectInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "HEAD Object",
RequestMethod: "HEAD",
RequestURI: "/<bucket-name>/<object-key>",
@ -403,8 +417,6 @@ func (s *Bucket) HeadObjectRequest(objectKey string, input *HeadObjectInput) (*r
},
}
s.Properties.ObjectKey = &objectKey
x := &HeadObjectOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -469,7 +481,7 @@ func (s *Bucket) InitiateMultipartUpload(objectKey string, input *InitiateMultip
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -482,9 +494,13 @@ func (s *Bucket) InitiateMultipartUploadRequest(objectKey string, input *Initiat
input = &InitiateMultipartUploadInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "Initiate Multipart Upload",
RequestMethod: "POST",
RequestURI: "/<bucket-name>/<object-key>?uploads",
@ -493,8 +509,6 @@ func (s *Bucket) InitiateMultipartUploadRequest(objectKey string, input *Initiat
},
}
s.Properties.ObjectKey = &objectKey
x := &InitiateMultipartUploadOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -553,7 +567,7 @@ func (s *Bucket) ListMultipart(objectKey string, input *ListMultipartInput) (*Li
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -566,9 +580,13 @@ func (s *Bucket) ListMultipartRequest(objectKey string, input *ListMultipartInpu
input = &ListMultipartInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "List Multipart",
RequestMethod: "GET",
RequestURI: "/<bucket-name>/<object-key>",
@ -577,8 +595,6 @@ func (s *Bucket) ListMultipartRequest(objectKey string, input *ListMultipartInpu
},
}
s.Properties.ObjectKey = &objectKey
x := &ListMultipartOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -638,7 +654,7 @@ func (s *Bucket) OptionsObject(objectKey string, input *OptionsObjectInput) (*Op
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -651,9 +667,13 @@ func (s *Bucket) OptionsObjectRequest(objectKey string, input *OptionsObjectInpu
input = &OptionsObjectInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "OPTIONS Object",
RequestMethod: "OPTIONS",
RequestURI: "/<bucket-name>/<object-key>",
@ -662,8 +682,6 @@ func (s *Bucket) OptionsObjectRequest(objectKey string, input *OptionsObjectInpu
},
}
s.Properties.ObjectKey = &objectKey
x := &OptionsObjectOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -736,7 +754,7 @@ func (s *Bucket) PutObject(objectKey string, input *PutObjectInput) (*PutObjectO
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -749,9 +767,13 @@ func (s *Bucket) PutObjectRequest(objectKey string, input *PutObjectInput) (*req
input = &PutObjectInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "PUT Object",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>/<object-key>",
@ -760,8 +782,6 @@ func (s *Bucket) PutObjectRequest(objectKey string, input *PutObjectInput) (*req
},
}
s.Properties.ObjectKey = &objectKey
x := &PutObjectOutput{}
r, err := request.New(o, input, x)
if err != nil {
@ -841,7 +861,7 @@ func (s *Bucket) UploadMultipart(objectKey string, input *UploadMultipartInput)
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -854,9 +874,13 @@ func (s *Bucket) UploadMultipartRequest(objectKey string, input *UploadMultipart
input = &UploadMultipartInput{}
}
properties := *s.Properties
properties.ObjectKey = &objectKey
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
Properties: &properties,
APIName: "Upload Multipart",
RequestMethod: "PUT",
RequestURI: "/<bucket-name>/<object-key>",
@ -865,8 +889,6 @@ func (s *Bucket) UploadMultipartRequest(objectKey string, input *UploadMultipart
},
}
s.Properties.ObjectKey = &objectKey
x := &UploadMultipartOutput{}
r, err := request.New(o, input, x)
if err != nil {

View file

@ -18,11 +18,15 @@
package service
import (
"net/http"
"github.com/yunify/qingstor-sdk-go/config"
"github.com/yunify/qingstor-sdk-go/request"
"github.com/yunify/qingstor-sdk-go/request/data"
)
var _ http.Header
// Service QingStor provides low-cost and reliable online storage service with unlimited storage space, high read and write performance, high reliability and data safety, fine-grained access control, and easy to use API.
type Service struct {
Config *config.Config
@ -47,7 +51,7 @@ func (s *Service) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, erro
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err

View file

@ -20,11 +20,15 @@
package service
import (
"net/http"
"github.com/yunify/qingstor-sdk-go/config"
"github.com/yunify/qingstor-sdk-go/request"
"github.com/yunify/qingstor-sdk-go/request/data"
)
var _ http.Header
{{if $service.Description}}// Service {{$service.Description}}{{end}}
type Service struct {
Config *config.Config

View file

@ -153,7 +153,7 @@
return nil, err
}
requestID := r.HTTPResponse.Header.Get("X-Qs-Request-Id")
requestID := r.HTTPResponse.Header.Get(http.CanonicalHeaderKey("X-QS-Request-ID"))
x.RequestID = &requestID
return x, err
@ -186,10 +186,17 @@
{{$uri := replace $uri "}" ">" -1}}
{{$uri := dashConnected $uri}}
{{- if ne $belongs "Service"}}
properties := *s.Properties
{{- end}}
{{if eq $service.Name "Object"}}
properties.ObjectKey = &objectKey
{{end}}
o := &data.Operation{
Config: s.Config,
{{- if ne $belongs "Service"}}
Properties: s.Properties,
Properties: &properties,
{{- end}}
APIName: "{{$operation.Name}}",
RequestMethod: "{{$operation.Request.Method}}",
@ -210,10 +217,6 @@
{{end -}}
}
{{if eq $service.Name "Object"}}
s.Properties.ObjectKey = &objectKey
{{end}}
x := &{{$opID}}Output{}
r, err := request.New(o, {{if $hasInput}}input{{else}}nil{{end}}, x)
if err != nil {

View file

@ -22,6 +22,7 @@ package service
import (
"fmt"
"io"
"net/http"
"time"
"github.com/yunify/qingstor-sdk-go/config"
@ -32,6 +33,7 @@ import (
var _ fmt.State
var _ io.Reader
var _ http.Header
var _ time.Time
var _ config.Config

View file

@ -25,6 +25,7 @@ import (
"net/http"
"os"
"os/exec"
"sync"
"github.com/DATA-DOG/godog"
@ -66,7 +67,9 @@ func ObjectFeatureContext(s *godog.Suite) {
}
// --------------------------------------------------------------------------
var putObjectOutput *qs.PutObjectOutput
const concurrency = 16
var putObjectOutputs [concurrency]*qs.PutObjectOutput
func putObjectWithKey(objectKey string) error {
_, err = exec.Command("dd", "if=/dev/zero", "of=/tmp/sdk_bin", "bs=1024", "count=1").Output()
@ -75,189 +78,557 @@ func putObjectWithKey(objectKey string) error {
}
defer os.Remove("/tmp/sdk_bin")
file, err := os.Open("/tmp/sdk_bin")
if err != nil {
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
file, err := os.Open("/tmp/sdk_bin")
if err != nil {
errChan <- err
return
}
defer file.Close()
hash := md5.New()
_, err = io.Copy(hash, file)
if err != nil {
errChan <- err
return
}
hashInBytes := hash.Sum(nil)[:16]
md5String := hex.EncodeToString(hashInBytes)
//file.Seek(0, io.SeekStart)
file.Seek(0, 0)
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
putObjectOutput, err := bucket.PutObject(
fmt.Sprintf("%s-%d", objectKey, index),
&qs.PutObjectInput{
ContentType: qs.String("text/plain"),
ContentMD5: qs.String(md5String),
Body: file,
},
)
if err != nil {
errChan <- err
return
}
putObjectOutputs[index] = putObjectOutput
errChan <- nil
return
}(i, errChan)
}
defer file.Close()
wg.Wait()
hash := md5.New()
_, err = io.Copy(hash, file)
hashInBytes := hash.Sum(nil)[:16]
md5String := hex.EncodeToString(hashInBytes)
//file.Seek(0, io.SeekStart)
file.Seek(0, 0)
putObjectOutput, err = bucket.PutObject(objectKey, &qs.PutObjectInput{
ContentType: qs.String("text/plain"),
ContentMD5: qs.String(md5String),
Body: file,
})
return err
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func putObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(putObjectOutput.StatusCode), statusCode)
for _, output := range putObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var copyObjectOutput *qs.PutObjectOutput
var copyObjectOutputs [concurrency]*qs.PutObjectOutput
func copyObjectWithKey(objectKey string) error {
copyObjectKey := fmt.Sprintf(`%s_copy`, objectKey)
copyObjectOutput, err = bucket.PutObject(copyObjectKey, &qs.PutObjectInput{
XQSCopySource: qs.String(fmt.Sprintf(`/%s/%s`, tc.BucketName, objectKey)),
})
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
copyObjectOutput, err := bucket.PutObject(
fmt.Sprintf("%s-%d-copy", objectKey, index),
&qs.PutObjectInput{
XQSCopySource: qs.String(
fmt.Sprintf("/%s/%s-%d", tc.BucketName, objectKey, index),
),
})
if err != nil {
errChan <- err
return
}
copyObjectOutputs[index] = copyObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func copyObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(copyObjectOutput.StatusCode), statusCode)
for _, output := range copyObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var moveObjectOutput *qs.PutObjectOutput
var moveObjectOutputs [concurrency]*qs.PutObjectOutput
func moveObjectWithKey(objectKey string) error {
copyObjectKey := fmt.Sprintf(`%s_copy`, objectKey)
moveObjectKey := fmt.Sprintf(`%s_move`, objectKey)
moveObjectOutput, err = bucket.PutObject(moveObjectKey, &qs.PutObjectInput{
XQSMoveSource: qs.String(fmt.Sprintf(`/%s/%s`, tc.BucketName, copyObjectKey)),
})
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
moveObjectOutput, err := bucket.PutObject(
fmt.Sprintf("%s-%d-move", objectKey, index),
&qs.PutObjectInput{
XQSMoveSource: qs.String(
fmt.Sprintf(`/%s/%s-%d-copy`, tc.BucketName, objectKey, index),
),
})
if err != nil {
errChan <- err
return
}
moveObjectOutputs[index] = moveObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func moveObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(moveObjectOutput.StatusCode), statusCode)
for _, output := range moveObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var getObjectOutput *qs.GetObjectOutput
var getObjectOutputs [concurrency]*qs.GetObjectOutput
func getObjectWithKey(objectKey string) error {
getObjectOutput, err = bucket.GetObject(objectKey, nil)
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
getObjectOutput, err := bucket.GetObject(
fmt.Sprintf("%s-%d", objectKey, index), nil,
)
if err != nil {
errChan <- err
return
}
getObjectOutputs[index] = getObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func getObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(getObjectOutput.StatusCode), statusCode)
for _, output := range getObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
func getObjectContentLengthIs(length int) error {
buffer := &bytes.Buffer{}
buffer.ReadFrom(getObjectOutput.Body)
getObjectOutput.Body.Close()
return checkEqual(len(buffer.Bytes())*1024, length)
for _, output := range getObjectOutputs {
buffer.Truncate(0)
buffer.ReadFrom(output.Body)
err = checkEqual(len(buffer.Bytes())*1024, length)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var getObjectWithContentTypeRequest *request.Request
var getObjectWithContentTypeRequests [concurrency]*request.Request
func getObjectWithContentType(objectKey, contentType string) error {
getObjectWithContentTypeRequest, _, err = bucket.GetObjectRequest(
objectKey,
&qs.GetObjectInput{
ResponseContentType: qs.String(contentType),
},
)
if err != nil {
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
getObjectWithContentTypeRequest, _, err := bucket.GetObjectRequest(
fmt.Sprintf("%s-%d", objectKey, index),
&qs.GetObjectInput{
ResponseContentType: qs.String(contentType),
},
)
if err != nil {
errChan <- err
return
}
err = getObjectWithContentTypeRequest.Send()
if err != nil {
errChan <- err
return
}
err = getObjectWithContentTypeRequest.Send()
if err != nil {
errChan <- err
return
}
getObjectWithContentTypeRequests[index] = getObjectWithContentTypeRequest
errChan <- nil
return
}(i, errChan)
}
err = getObjectWithContentTypeRequest.Send()
if err != nil {
return err
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func getObjectContentTypeIs(contentType string) error {
return checkEqual(getObjectWithContentTypeRequest.HTTPResponse.Header.Get("Content-Type"), contentType)
for _, r := range getObjectWithContentTypeRequests {
err = checkEqual(r.HTTPResponse.Header.Get("Content-Type"), contentType)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var getObjectWithQuerySignatureURL string
var getObjectWithQuerySignatureURLs [concurrency]string
func getObjectWithQuerySignature(objectKey string) error {
r, _, err := bucket.GetObjectRequest(objectKey, nil)
if err != nil {
return err
}
errChan := make(chan error, concurrency)
err = r.SignQuery(10)
if err != nil {
return err
}
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
getObjectWithQuerySignatureURL = r.HTTPRequest.URL.String()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
r, _, err := bucket.GetObjectRequest(
fmt.Sprintf("%s-%d", objectKey, index), nil,
)
if err != nil {
errChan <- err
return
}
err = r.SignQuery(10)
if err != nil {
errChan <- err
return
}
getObjectWithQuerySignatureURLs[index] = r.HTTPRequest.URL.String()
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func getObjectWithQuerySignatureContentLengthIs(length int) error {
out, err := http.Get(getObjectWithQuerySignatureURL)
if err != nil {
return err
}
buffer := &bytes.Buffer{}
buffer.ReadFrom(out.Body)
out.Body.Close()
return checkEqual(len(buffer.Bytes())*1024, length)
for _, url := range getObjectWithQuerySignatureURLs {
out, err := http.Get(url)
if err != nil {
return err
}
buffer.Truncate(0)
buffer.ReadFrom(out.Body)
out.Body.Close()
err = checkEqual(len(buffer.Bytes())*1024, length)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var headObjectOutput *qs.HeadObjectOutput
var headObjectOutputs [concurrency]*qs.HeadObjectOutput
func headObjectWithKey(objectKey string) error {
headObjectOutput, err = bucket.HeadObject(objectKey, nil)
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
headObjectOutput, err := bucket.HeadObject(
fmt.Sprintf("%s-%d", objectKey, index), nil,
)
if err != nil {
errChan <- err
return
}
headObjectOutputs[index] = headObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func headObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(headObjectOutput.StatusCode), statusCode)
for _, output := range headObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var optionsObjectOutput *qs.OptionsObjectOutput
var optionsObjectOutputs [concurrency]*qs.OptionsObjectOutput
func optionsObjectWithMethodAndOrigin(objectKey, method, origin string) error {
optionsObjectOutput, err = bucket.OptionsObject(
objectKey,
&qs.OptionsObjectInput{
AccessControlRequestMethod: qs.String(method),
Origin: qs.String(origin),
},
)
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
optionsObjectOutput, err := bucket.OptionsObject(
fmt.Sprintf("%s-%d", objectKey, index),
&qs.OptionsObjectInput{
AccessControlRequestMethod: qs.String(method),
Origin: qs.String(origin),
},
)
if err != nil {
errChan <- err
return
}
optionsObjectOutputs[index] = optionsObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func optionsObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(optionsObjectOutput.StatusCode), statusCode)
for _, output := range optionsObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
// --------------------------------------------------------------------------
var deleteObjectOutput *qs.DeleteObjectOutput
var deleteTheMoveObjectOutput *qs.DeleteObjectOutput
var deleteObjectOutputs [concurrency]*qs.DeleteObjectOutput
var deleteTheMoveObjectOutputs [concurrency]*qs.DeleteObjectOutput
func deleteObjectWithKey(objectKey string) error {
deleteObjectOutput, err = bucket.DeleteObject(objectKey)
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
deleteObjectOutput, err := bucket.DeleteObject(
fmt.Sprintf("%s-%d", objectKey, index),
)
if err != nil {
errChan <- err
return
}
deleteObjectOutputs[index] = deleteObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func deleteObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(deleteObjectOutput.StatusCode), statusCode)
for _, output := range deleteObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}
func deleteTheMoveObjectWithKey(objectKey string) error {
deleteTheMoveObjectOutput, err = bucket.DeleteObject(fmt.Sprintf(`%s_move`, objectKey))
return err
errChan := make(chan error, concurrency)
wg := sync.WaitGroup{}
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(index int, errChan chan<- error) {
wg.Done()
if len(objectKey) > 1000 {
objectKey = objectKey[:1000]
}
deleteTheMoveObjectOutput, err := bucket.DeleteObject(
fmt.Sprintf("%s-%d-move", objectKey, index),
)
if err != nil {
errChan <- err
return
}
deleteTheMoveObjectOutputs[index] = deleteTheMoveObjectOutput
errChan <- nil
return
}(i, errChan)
}
wg.Wait()
for i := 0; i < concurrency; i++ {
err = <-errChan
if err != nil {
return err
}
}
return nil
}
func deleteTheMoveObjectStatusCodeIs(statusCode int) error {
return checkEqual(qs.IntValue(deleteTheMoveObjectOutput.StatusCode), statusCode)
for _, output := range deleteTheMoveObjectOutputs {
err = checkEqual(qs.IntValue(output.StatusCode), statusCode)
if err != nil {
return err
}
}
return nil
}

View file

@ -20,4 +20,4 @@
package sdk
// Version number.
const Version = "2.2.5"
const Version = "2.2.6"