vendor: add qingstor-sdk-go for QingStor
This commit is contained in:
+269
@@ -0,0 +1,269 @@
|
||||
// +-------------------------------------------------------------------------
|
||||
// | Copyright (C) 2016 Yunify, Inc.
|
||||
// +-------------------------------------------------------------------------
|
||||
// | Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// | you may not use this work except in compliance with the License.
|
||||
// | You may obtain a copy of the License in the LICENSE file, or at:
|
||||
// |
|
||||
// | http://www.apache.org/licenses/LICENSE-2.0
|
||||
// |
|
||||
// | Unless required by applicable law or agreed to in writing, software
|
||||
// | distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// | See the License for the specific language governing permissions and
|
||||
// | limitations under the License.
|
||||
// +-------------------------------------------------------------------------
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/DATA-DOG/godog"
|
||||
"github.com/DATA-DOG/godog/gherkin"
|
||||
|
||||
qsErrors "github.com/yunify/qingstor-sdk-go/request/errors"
|
||||
qs "github.com/yunify/qingstor-sdk-go/service"
|
||||
)
|
||||
|
||||
// BucketFeatureContext provides feature context for bucket.
|
||||
func BucketFeatureContext(s *godog.Suite) {
|
||||
s.Step(`^initialize the bucket$`, initializeTheBucket)
|
||||
s.Step(`^the bucket is initialized$`, theBucketIsInitialized)
|
||||
|
||||
s.Step(`^put bucket$`, putBucketFake)
|
||||
s.Step(`^put bucket status code is (\d+)$`, putBucketStatusCodeIsFake)
|
||||
s.Step(`^put same bucket again$`, putSameBucketAgain)
|
||||
s.Step(`^put same bucket again status code is (\d+)$$`, putSameBucketAgainStatusCodeIs)
|
||||
|
||||
s.Step(`^list objects$`, listObjects)
|
||||
s.Step(`^list objects status code is (\d+)$`, listObjectsStatusCodeIs)
|
||||
s.Step(`^list objects keys count is (\d+)$`, listObjectsKeysCountIs)
|
||||
|
||||
s.Step(`^head bucket$`, headBucket)
|
||||
s.Step(`^head bucket status code is (\d+)$`, headBucketStatusCodeIs)
|
||||
|
||||
s.Step(`^delete bucket$`, deleteBucketFake)
|
||||
s.Step(`^delete bucket status code is (\d+)$`, deleteBucketStatusCodeIsFake)
|
||||
|
||||
s.Step(`^delete multiple objects:$`, deleteMultipleObjects)
|
||||
s.Step(`^delete multiple objects code is (\d+)$`, deleteMultipleObjectsCodeIs)
|
||||
|
||||
s.Step(`^get bucket statistics$`, getBucketStatistics)
|
||||
s.Step(`^get bucket statistics status code is (\d+)$`, getBucketStatisticsStatusCodeIs)
|
||||
s.Step(`^get bucket statistics status is "([^"]*)"$`, getBucketStatisticsStatusIs)
|
||||
|
||||
s.Step(`^an object created by initiate multipart upload$`, anObjectCreatedByInitiateMultipartUpload)
|
||||
s.Step(`^list multipart uploads$`, listMultipartUploads)
|
||||
s.Step(`^list multipart uploads count is (\d+)$`, listMultipartUploadsCountIs)
|
||||
s.Step(`^list multipart uploads with prefix$`, listMultipartUploadsWithPrefix)
|
||||
s.Step(`^list multipart uploads with prefix count is (\d+)$`, listMultipartUploadsWithPrefixCountIs)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var bucket *qs.Bucket
|
||||
|
||||
func initializeTheBucket() error {
|
||||
bucket, err = qsService.Bucket(tc.BucketName, tc.Zone)
|
||||
return err
|
||||
}
|
||||
|
||||
func theBucketIsInitialized() error {
|
||||
if bucket == nil {
|
||||
return errors.New("Bucket is not initialized")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var putBucketOutput *qs.PutBucketOutput
|
||||
|
||||
func putBucket() error {
|
||||
putBucketOutput, err = bucket.Put()
|
||||
return err
|
||||
}
|
||||
|
||||
func putBucketFake() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func putBucketStatusCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(putBucketOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
func putBucketStatusCodeIsFake(_ int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
func putSameBucketAgain() error {
|
||||
_, err = bucket.Put()
|
||||
return nil
|
||||
}
|
||||
|
||||
func putSameBucketAgainStatusCodeIs(statusCode int) error {
|
||||
switch e := err.(type) {
|
||||
case *qsErrors.QingStorError:
|
||||
return checkEqual(e.StatusCode, statusCode)
|
||||
}
|
||||
|
||||
return fmt.Errorf("put same bucket again should get \"%d\"", statusCode)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var listObjectsOutput *qs.ListObjectsOutput
|
||||
|
||||
func listObjects() error {
|
||||
listObjectsOutput, err = bucket.ListObjects(&qs.ListObjectsInput{
|
||||
Delimiter: qs.String("/"),
|
||||
Limit: qs.Int(1000),
|
||||
Prefix: qs.String("Test/"),
|
||||
Marker: qs.String("Next"),
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func listObjectsStatusCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(listObjectsOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
func listObjectsKeysCountIs(count int) error {
|
||||
return checkEqual(len(listObjectsOutput.Keys), count)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var headBucketOutput *qs.HeadBucketOutput
|
||||
|
||||
func headBucket() error {
|
||||
headBucketOutput, err = bucket.Head()
|
||||
return err
|
||||
}
|
||||
|
||||
func headBucketStatusCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(headBucketOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var deleteBucketOutput *qs.DeleteBucketOutput
|
||||
|
||||
func deleteBucket() error {
|
||||
deleteBucketOutput, err = bucket.Delete()
|
||||
return err
|
||||
}
|
||||
|
||||
func deleteBucketFake() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func deleteBucketStatusCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(deleteBucketOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
func deleteBucketStatusCodeIsFake(_ int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var deleteMultipleObjectsOutput *qs.DeleteMultipleObjectsOutput
|
||||
|
||||
func deleteMultipleObjects(requestJSON *gherkin.DocString) error {
|
||||
_, err := bucket.PutObject("object_0", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = bucket.PutObject("object_1", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = bucket.PutObject("object_2", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
deleteMultipleObjectsInput := &qs.DeleteMultipleObjectsInput{}
|
||||
err = json.Unmarshal([]byte(requestJSON.Content), deleteMultipleObjectsInput)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
deleteMultipleObjectsOutput, err = bucket.DeleteMultipleObjects(
|
||||
&qs.DeleteMultipleObjectsInput{
|
||||
Objects: deleteMultipleObjectsInput.Objects,
|
||||
Quiet: deleteMultipleObjectsInput.Quiet,
|
||||
},
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func deleteMultipleObjectsCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(deleteMultipleObjectsOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
var getBucketStatisticsOutput *qs.GetBucketStatisticsOutput
|
||||
|
||||
func getBucketStatistics() error {
|
||||
getBucketStatisticsOutput, err = bucket.GetStatistics()
|
||||
return err
|
||||
}
|
||||
|
||||
func getBucketStatisticsStatusCodeIs(statusCode int) error {
|
||||
return checkEqual(qs.IntValue(getBucketStatisticsOutput.StatusCode), statusCode)
|
||||
}
|
||||
|
||||
func getBucketStatisticsStatusIs(status string) error {
|
||||
return checkEqual(qs.StringValue(getBucketStatisticsOutput.Status), status)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
var listMultipartUploadsOutputObjectKey = "list_multipart_uploads_object_key"
|
||||
var listMultipartUploadsInitiateOutput *qs.InitiateMultipartUploadOutput
|
||||
var listMultipartUploadsOutput *qs.ListMultipartUploadsOutput
|
||||
|
||||
func anObjectCreatedByInitiateMultipartUpload() error {
|
||||
listMultipartUploadsInitiateOutput, err = bucket.InitiateMultipartUpload(
|
||||
listMultipartUploadsOutputObjectKey, nil,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func listMultipartUploads() error {
|
||||
listMultipartUploadsOutput, err = bucket.ListMultipartUploads(nil)
|
||||
return err
|
||||
}
|
||||
|
||||
func listMultipartUploadsCountIs(count int) error {
|
||||
return checkEqual(len(listMultipartUploadsOutput.Uploads), count)
|
||||
}
|
||||
|
||||
func listMultipartUploadsWithPrefix() error {
|
||||
listMultipartUploadsOutput, err = bucket.ListMultipartUploads(
|
||||
&qs.ListMultipartUploadsInput{
|
||||
Prefix: qs.String(listMultipartUploadsOutputObjectKey),
|
||||
},
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func listMultipartUploadsWithPrefixCountIs(count int) error {
|
||||
_, err = bucket.AbortMultipartUpload(
|
||||
listMultipartUploadsOutputObjectKey, &qs.AbortMultipartUploadInput{
|
||||
UploadID: listMultipartUploadsInitiateOutput.UploadID,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return checkEqual(len(listMultipartUploadsOutput.Uploads), count)
|
||||
}
|
||||
Reference in New Issue
Block a user