From dad5b1f3fbbf30958d3d8ae930b06abcaf8db5ac Mon Sep 17 00:00:00 2001 From: jojoliang Date: Thu, 26 Nov 2020 11:15:20 +0800 Subject: [PATCH] add ci doc --- batch.go | 4 +- bucket_test.go | 102 ++++++------- ci.go | 17 +-- ci_doc.go | 271 +++++++++++++++++++++++++++++++++++ cos.go | 2 +- example/bucket/intelligenttiering.go | 14 +- example/object/ci_doc_process.go | 132 +++++++++++++++++ object_test.go | 2 +- service_test.go | 8 +- 9 files changed, 478 insertions(+), 74 deletions(-) create mode 100644 ci_doc.go create mode 100644 example/object/ci_doc_process.go diff --git a/batch.go b/batch.go index 05089dd..ea10c19 100644 --- a/batch.go +++ b/batch.go @@ -13,7 +13,7 @@ type BatchRequestHeaders struct { XCosAppid int `header:"x-cos-appid" xml:"-" url:"-"` ContentLength string `header:"Content-Length,omitempty" xml:"-" url:"-"` ContentType string `header:"Content-Type,omitempty" xml:"-" url:"-"` - Headers *http.Header `header:"-" xml:"-", url:"-"` + Headers *http.Header `header:"-" xml:"-" url:"-"` } // BatchProgressSummary @@ -244,7 +244,7 @@ func (s *BatchService) UpdateJobPriority(ctx context.Context, opt *BatchUpdatePr type BatchUpdateStatusOptions struct { JobId string `header:"-" url:"-" xml:"-"` RequestedJobStatus string `url:"requestedJobStatus" header:"-" xml:"-"` - StatusUpdateReason string `url:"statusUpdateReason,omitempty" header:"-", xml:"-"` + StatusUpdateReason string `url:"statusUpdateReason,omitempty" header:"-" xml:"-"` } type BatchUpdateStatusResult struct { XMLName xml.Name `xml:"UpdateJobStatusResult"` diff --git a/bucket_test.go b/bucket_test.go index 16c55a2..ba9ae7d 100644 --- a/bucket_test.go +++ b/bucket_test.go @@ -152,14 +152,14 @@ func TestBucketService_Head(t *testing.T) { } func TestBucketService_GetObjectVersions(t *testing.T) { - setup() - defer teardown() + setup() + defer teardown() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - testMethod(t, r, http.MethodGet) - w.WriteHeader(http.StatusOK) - vs := values{ - "versions": "", + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, http.MethodGet) + w.WriteHeader(http.StatusOK) + vs := values{ + "versions": "", "delimiter": "/", } testFormValues(t, r, vs) @@ -203,51 +203,51 @@ func TestBucketService_GetObjectVersions(t *testing.T) { `) - }) + }) - want := &BucketGetObjectVersionsResult { - XMLName: xml.Name { Local: "ListVersionsResult" }, - Name: "examplebucket-1250000000", - MaxKeys: 1000, - IsTruncated: false, - Delimiter: "/", - CommonPrefixes: []string { - "example-folder-1/", - "example-folder-2/", - }, - Version: []ListVersionsResultVersion { - { - Key: "example-object-1.jpg", - VersionId: "MTg0NDUxNzgxMjEzNTU3NTk1Mjg", - IsLatest: true, - LastModified: "2019-08-16T10:45:53.000Z", - ETag: "\"5d1143df07a17b23320d0da161e2819e\"", - Size: 30, - StorageClass: "STANDARD", - Owner: &Owner { - ID: "1250000000", - DisplayName: "1250000000", - }, - }, - }, - DeleteMarker: []ListVersionsResultDeleteMarker { - { - Key: "example-object-1.jpg", - VersionId: "MTg0NDUxNzgxMjEzNjE1OTcxMzM", - IsLatest: false, - LastModified: "2019-08-16T10:45:47.000Z", - Owner: &Owner { - ID: "1250000000", - DisplayName: "1250000000", - }, - }, - }, - } - opt := &BucketGetObjectVersionsOptions { - Delimiter: "/", - } - res, _, err := client.Bucket.GetObjectVersions(context.Background(), opt) - if err != nil { + want := &BucketGetObjectVersionsResult{ + XMLName: xml.Name{Local: "ListVersionsResult"}, + Name: "examplebucket-1250000000", + MaxKeys: 1000, + IsTruncated: false, + Delimiter: "/", + CommonPrefixes: []string{ + "example-folder-1/", + "example-folder-2/", + }, + Version: []ListVersionsResultVersion{ + { + Key: "example-object-1.jpg", + VersionId: "MTg0NDUxNzgxMjEzNTU3NTk1Mjg", + IsLatest: true, + LastModified: "2019-08-16T10:45:53.000Z", + ETag: "\"5d1143df07a17b23320d0da161e2819e\"", + Size: 30, + StorageClass: "STANDARD", + Owner: &Owner{ + ID: "1250000000", + DisplayName: "1250000000", + }, + }, + }, + DeleteMarker: []ListVersionsResultDeleteMarker{ + { + Key: "example-object-1.jpg", + VersionId: "MTg0NDUxNzgxMjEzNjE1OTcxMzM", + IsLatest: false, + LastModified: "2019-08-16T10:45:47.000Z", + Owner: &Owner{ + ID: "1250000000", + DisplayName: "1250000000", + }, + }, + }, + } + opt := &BucketGetObjectVersionsOptions{ + Delimiter: "/", + } + res, _, err := client.Bucket.GetObjectVersions(context.Background(), opt) + if err != nil { t.Fatalf("Bucket.GetObjectVersions returned error: %v", err) } if !reflect.DeepEqual(res, want) { diff --git a/ci.go b/ci.go index 60fcff0..ed1bc84 100644 --- a/ci.go +++ b/ci.go @@ -48,13 +48,14 @@ type PicImageInfo struct { Quality int `xml:"Quality,omitempty"` } type PicProcessObject struct { - Key string `xml:"Key,omitempty"` - Location string `xml:"Location,omitempty"` - Format string `xml:"Format,omitempty"` - Width int `xml:"Width,omitempty"` - Height int `xml:"Height,omitempty"` - Size int `xml:"Size,omitempty"` - Quality int `xml:"Quality,omitempty"` + Key string `xml:"Key,omitempty"` + Location string `xml:"Location,omitempty"` + Format string `xml:"Format,omitempty"` + Width int `xml:"Width,omitempty"` + Height int `xml:"Height,omitempty"` + Size int `xml:"Size,omitempty"` + Quality int `xml:"Quality,omitempty"` + WatermarkStatus int `xml:"WatermarkStatus,omitempty"` } type picOperationsHeader struct { @@ -171,7 +172,7 @@ type VideoAuditingJobDetail struct { CreationTime string `xml:",omitempty"` Object string `xml:",omitempty"` SnapshotCount string `xml:",omitempty"` - result int `xml:",omitempty"` + Result int `xml:",omitempty"` PornInfo *RecognitionInfo `xml:",omitempty"` TerrorismInfo *RecognitionInfo `xml:",omitempty"` PoliticsInfo *RecognitionInfo `xml:",omitempty"` diff --git a/ci_doc.go b/ci_doc.go new file mode 100644 index 0000000..b6a571e --- /dev/null +++ b/ci_doc.go @@ -0,0 +1,271 @@ +package cos + +import ( + "context" + "encoding/xml" + "net/http" +) + +type DocProcessJobInput struct { + Object string `xml:"Object,omitempty"` +} + +type DocProcessJobOutput struct { + Region string `xml:"Region,omitempty"` + Bucket string `xml:"Bucket,omitempty"` + Object string `xml:"Object,omitempty"` +} + +type DocProcessJobDocProcess struct { + SrcType string `xml:"SrcType,omitempty"` + TgtType string `xml:"TgtType,omitempty"` + SheetId int `xml:"SheetId,omitempty"` + StartPage int `xml:"StartPage,omitempty"` + EndPage int `xml:"EndPage,omitempty"` + ImageParams string `xml:"ImageParams,omitempty"` + DocPassword string `xml:"DocPassword,omitempty"` + Comments int `xml:"Comments,omitempty"` + PaperDirection int `xml:"PaperDirection,omitempty"` + Quality int `xml:"Quality,omitempty"` + Zoom int `xml:"Zoom,omitempty"` +} + +type DocProcessJobDocProcessResult struct { + FailPageCount int `xml:",omitempty"` + SuccPageCount int `xml:"SuccPageCount,omitempty"` + TaskId string `xml:"TaskId,omitempty"` + TgtType string `xml:"TgtType,omitempty"` + TotalPageCount int `xml:"TotalPageCount,omitempty"` + PageInfo struct { + PageNo int `xml:"PageNo,omitempty"` + TgtUri string `xml:"TgtUri,omitempty"` + } `xml:"PageInfo,omitempty"` +} + +type DocProcessJobOperation struct { + Output *DocProcessJobOutput `xml:"Output,omitempty"` + DocProcess *DocProcessJobDocProcess `xml:"DocProcess,omitempty"` + DocProcessResult *DocProcessJobDocProcessResult `xml:"DocProcessResult,omitempty"` +} + +type DocProcessJobDetail struct { + Code string `xml:"Code,omitempty"` + Message string `xml:"Message,omitempty"` + JobId string `xml:"JobId,omitempty"` + Tag string `xml:"Tag,omitempty"` + State string `xml:"State,omitempty"` + CreationTime string `xml:"CreationTime,omitempty"` + QueueId string `xml:"QueueId,omitempty"` + Input *DocProcessJobInput `xml:"Input,omitempty"` + Operation *DocProcessJobOperation `xml:"Operation,omitempty"` +} + +type CreateDocProcessJobsOptions struct { + XMLName xml.Name `xml:"Request"` + Tag string `xml:"Tag,omitempty"` + Input *DocProcessJobInput `xml:"Input,omitempty"` + Operation *DocProcessJobOperation `xml:"Operation,omitempty"` + QueueId string `xml:"QueueId,omitempty"` +} + +type CreateDocProcessJobsResult struct { + XMLName xml.Name `xml:"Response"` + JobsDetail DocProcessJobDetail `xml:"JobsDetail,omitempty"` +} + +func (s *CIService) CreateDocProcessJobs(ctx context.Context, opt *CreateDocProcessJobsOptions) (*CreateDocProcessJobsResult, *Response, error) { + var res CreateDocProcessJobsResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/doc_jobs", + method: http.MethodPost, + body: opt, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type DescribeDocProcessJobResult struct { + XMLName xml.Name `xml:"Response"` + JobsDetail *DocProcessJobDetail `xml:"JobsDetail,omitempty"` + NonExistJobIds string `xml:"NonExistJobIds,omitempty"` +} + +func (s *CIService) DescribeDocProcessJob(ctx context.Context, jobid string) (*DescribeDocProcessJobResult, *Response, error) { + var res DescribeDocProcessJobResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/doc_jobs/" + jobid, + method: http.MethodGet, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type DescribeDocProcessJobsOptions struct { + QueueId string `url:"queueId,omitempty"` + Tag string `url:"tag,omitempty"` + OrderByTime string `url:"orderByTime,omitempty"` + NextToken string `url:"nextToken,omitempty"` + Size int `url:"size,omitempty"` + States string `url:"states,omitempty"` + StartCreationTime string `url:"startCreationTime,omitempty"` + EndCreationTime string `url:"endCreationTime,omitempty"` +} + +type DescribeDocProcessJobsResult struct { + XMLName xml.Name `xml:"Response"` + JobsDetail []DocProcessJobDetail `xml:"JobsDetail,omitempty"` + NextToken string `xml:"NextToken,omitempty"` +} + +func (s *CIService) DescribeDocProcessJobs(ctx context.Context, opt *DescribeDocProcessJobsOptions) (*DescribeDocProcessJobsResult, *Response, error) { + var res DescribeDocProcessJobsResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/doc_jobs", + optQuery: opt, + method: http.MethodGet, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type DescribeDocProcessQueuesOptions struct { + QueueIds string `url:"queueIds,omitempty"` + State string `url:"state,omitempty"` + PageNumber int `url:"pageNumber,omitempty"` + PageSize int `url:"pageSize,omitempty"` +} + +type DescribeDocProcessQueuesResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + TotalCount int `xml:"TotalCount,omitempty"` + PageNumber int `xml:"PageNumber,omitempty"` + PageSize int `xml:"PageSize,omitempty"` + QueueList []DocProcessQueue `xml:"QueueList,omitempty"` + NonExistPIDs []string `xml:"NonExistPIDs,omitempty"` +} + +type DocProcessQueue struct { + QueueId string `xml:"QueueId,omitempty"` + Name string `xml:"Name,omitempty"` + State string `xml:"State,omitempty"` + MaxSize int `xml:"MaxSize,omitempty"` + MaxConcurrent int `xml:"MaxConcurrent,omitempty"` + UpdateTime string `xml:"UpdateTime,omitempty"` + CreateTime string `xml:"CreateTime,omitempty"` + NotifyConfig *DocProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` +} + +type DocProcessQueueNotifyConfig struct { + Url string `xml:"Url,omitempty"` + State string `xml:"State,omitempty"` + Type string `xml:"Type,omitempty"` + Event string `xml:"Event,omitempty"` +} + +func (s *CIService) DescribeDocProcessQueues(ctx context.Context, opt *DescribeDocProcessQueuesOptions) (*DescribeDocProcessQueuesResult, *Response, error) { + var res DescribeDocProcessQueuesResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/docqueue", + optQuery: opt, + method: http.MethodGet, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type UpdateDocProcessQueueOptions struct { + XMLName xml.Name `xml:"Request"` + Name string `xml:"Name,omitempty"` + QueueID string `xml:"QueueID,omitempty"` + State string `xml:"State,omitempty"` + NotifyConfig *DocProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` +} + +type UpdateDocProcessQueueResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId"` + Queue *DocProcessQueue `xml:"Queue"` +} + +func (s *CIService) UpdateDocProcessQueue(ctx context.Context, opt *UpdateDocProcessQueueOptions) (*UpdateDocProcessQueueResult, *Response, error) { + var res UpdateDocProcessQueueResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/docqueue/" + opt.QueueID, + body: opt, + method: http.MethodPut, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type DescribeDocProcessBucketsOptions struct { + Regions string `url:"regions,omitempty"` + BucketNames string `url:"bucketNames,omitempty"` + BucketName string `url:"bucketName,omitempty"` + PageNumber int `url:"pageNumber,omitempty"` + PageSize int `url:"pageSize,omitempty"` +} + +type DescribeDocProcessBucketsResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + TotalCount int `xml:"TotalCount,omitempty"` + PageNumber int `xml:"PageNumber,omitempty"` + PageSize int `xml:"PageSize,omitempty"` + DocBucketList []DocProcessBucket `xml:"DocBucketList,omitempty"` +} +type DocProcessBucket struct { + BucketId string `xml:"BucketId,omitempty"` + Name string `xml:"Name,omitempty"` + Region string `xml:"Region,omitempty"` + CreateTime string `xml:"CreateTime,omitempty"` + AliasBucketId string `xml:"AliasBucketId,omitempty"` +} + +func (s *CIService) DescribeDocProcessBuckets(ctx context.Context, opt *DescribeDocProcessBucketsOptions) (*DescribeDocProcessBucketsResult, *Response, error) { + var res DescribeDocProcessBucketsResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/docbucket", + optQuery: opt, + method: http.MethodGet, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + +type DocPreviewOptions struct { + SrcType string `url:"srcType,omitempty"` + Page int `url:"page,omitempty"` + ImageParams string `url:"ImageParams,omitempty"` + Sheet int `url:"sheet,omitempty"` + DstType string `url:"dstType,omitempty"` + Password string `url:"password,omitempty"` + Comment int `url:"comment,omitempty"` + ExcelPaperDirection int `url:"excelPaperDirection,omitempty"` + Quality int `url:"quality,omitempty"` + Zoom int `url:"zoom,omitempty"` +} + +func (s *CIService) DocPreview(ctx context.Context, name string, opt *DocPreviewOptions) (*Response, error) { + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.BucketURL, + uri: "/" + encodeURIComponent(name) + "?ci-process=doc-preview", + optQuery: opt, + method: http.MethodGet, + } + resp, err := s.client.send(ctx, &sendOpt) + return resp, err +} diff --git a/cos.go b/cos.go index 1a25e2f..30ccd67 100644 --- a/cos.go +++ b/cos.go @@ -22,7 +22,7 @@ import ( const ( // Version current go sdk version - Version = "0.7.12" + Version = "0.7.13" userAgent = "cos-go-sdk-v5/" + Version contentTypeXML = "application/xml" defaultServiceBaseURL = "http://service.cos.myqcloud.com" diff --git a/example/bucket/intelligenttiering.go b/example/bucket/intelligenttiering.go index 0256843..6bdae1a 100644 --- a/example/bucket/intelligenttiering.go +++ b/example/bucket/intelligenttiering.go @@ -48,13 +48,13 @@ func main() { }, }) - opt := &cos.BucketPutIntelligentTieringOptions { - Status: "Enabled", - Transition: &cos.BucketIntelligentTieringTransition { - Days: 30, - }, - } - _, err := c.Bucket.PutIntelligentTiering(context.Background(), opt) + opt := &cos.BucketPutIntelligentTieringOptions{ + Status: "Enabled", + Transition: &cos.BucketIntelligentTieringTransition{ + Days: 30, + }, + } + _, err := c.Bucket.PutIntelligentTiering(context.Background(), opt) log_status(err) res, _, err := c.Bucket.GetIntelligentTiering(context.Background()) log_status(err) diff --git a/example/object/ci_doc_process.go b/example/object/ci_doc_process.go new file mode 100644 index 0000000..c743d64 --- /dev/null +++ b/example/object/ci_doc_process.go @@ -0,0 +1,132 @@ +package main + +import ( + "context" + "fmt" + "io" + "net/http" + "net/url" + "os" + + "github.com/tencentyun/cos-go-sdk-v5" + "github.com/tencentyun/cos-go-sdk-v5/debug" +) + +func log_status(err error) { + if err == nil { + return + } + if cos.IsNotFoundError(err) { + // WARN + fmt.Println("WARN: Resource is not existed") + } else if e, ok := cos.IsCOSError(err); ok { + fmt.Printf("ERROR: Code: %v\n", e.Code) + fmt.Printf("ERROR: Message: %v\n", e.Message) + fmt.Printf("ERROR: Resource: %v\n", e.Resource) + fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) + // ERROR + } else { + fmt.Printf("ERROR: %v\n", err) + // ERROR + } +} + +func main() { + u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") + cu, _ := url.Parse("https://test-1259654469.ci.ap-guangzhou.myqcloud.com") + b := &cos.BaseURL{BucketURL: u, CIURL: cu} + c := cos.NewClient(b, &http.Client{ + Transport: &cos.AuthorizationTransport{ + SecretID: os.Getenv("COS_SECRETID"), + SecretKey: os.Getenv("COS_SECRETKEY"), + Transport: &debug.DebugRequestTransport{ + RequestHeader: true, + // Notice when put a large file and set need the request body, might happend out of memory error. + RequestBody: true, + ResponseHeader: true, + ResponseBody: true, + }, + }, + }) + + // 1、UpdateDocProcessQueue + updateQueueOpt := &cos.UpdateDocProcessQueueOptions{ + Name: "queue-doc-process-1", + QueueID: "p111a8dd208104ce3b11c78398f658ca8", + State: "Active", + NotifyConfig: &cos.DocProcessQueueNotifyConfig{ + State: "Off", + }, + } + updateQueueRes, _, err := c.CI.UpdateDocProcessQueue(context.Background(), updateQueueOpt) + log_status(err) + fmt.Printf("%+v\n", updateQueueRes) + + // 2、DescribeDocProcessQueues + DescribeQueueOpt := &cos.DescribeDocProcessQueuesOptions{ + QueueIds: "p111a8dd208104ce3b11c78398f658ca8,p4318f85d2aa14c43b1dba6f9b78be9b3,aacb2bb066e9c4478834d4196e76c49d3", + PageNumber: 1, + PageSize: 2, + } + DescribeQueueRes, _, err := c.CI.DescribeDocProcessQueues(context.Background(), DescribeQueueOpt) + log_status(err) + fmt.Printf("%+v\n", DescribeQueueRes) + + // 3、DescribeDocProcessBuckets + BucketsOpt := &cos.DescribeDocProcessBucketsOptions{ + Regions: "All", + } + BucketsRes, _, err := c.CI.DescribeDocProcessBuckets(context.Background(), BucketsOpt) + log_status(err) + fmt.Printf("%+v\n", BucketsRes) + + // 4、CreateDocProcessJobs + createJobOpt := &cos.CreateDocProcessJobsOptions{ + Tag: "DocProcess", + Input: &cos.DocProcessJobInput{ + Object: "form.pdf", + }, + Operation: &cos.DocProcessJobOperation{ + Output: &cos.DocProcessJobOutput{ + Region: "ap-guangzhou", + Object: "test-doc${Number}", + Bucket: "test-1259654469", + }, + DocProcess: &cos.DocProcessJobDocProcess{ + TgtType: "png", + StartPage: 1, + EndPage: -1, + ImageParams: "watermark/1/image/aHR0cDovL3Rlc3QwMDUtMTI1MTcwNDcwOC5jb3MuYXAtY2hvbmdxaW5nLm15cWNsb3VkLmNvbS8xLmpwZw==/gravity/southeast", + }, + }, + QueueId: "p111a8dd208104ce3b11c78398f658ca8", + } + createJobRes, _, err := c.CI.CreateDocProcessJobs(context.Background(), createJobOpt) + log_status(err) + fmt.Printf("%+v\n", createJobRes.JobsDetail) + + // 5、DescribeDocProcessJob + DescribeJobRes, _, err := c.CI.DescribeDocProcessJob(context.Background(), createJobRes.JobsDetail.JobId) + log_status(err) + fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) + + // 6、DescribeDocProcessJobs + DescribeJobsOpt := &cos.DescribeDocProcessJobsOptions{ + QueueId: "p111a8dd208104ce3b11c78398f658ca8", + Tag: "DocProcess", + } + DescribeJobsRes, _, err := c.CI.DescribeDocProcessJobs(context.Background(), DescribeJobsOpt) + log_status(err) + fmt.Printf("%+v\n", DescribeJobsRes) + + // 7、doc-preview + opt := &cos.DocPreviewOptions{ + Page: 1, + } + resp, err := c.CI.DocPreview(context.Background(), "form.pdf", opt) + log_status(err) + fd, _ := os.OpenFile("form.pdf", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) + io.Copy(fd, resp.Body) + fd.Close() + +} diff --git a/object_test.go b/object_test.go index fa63e42..cce6677 100644 --- a/object_test.go +++ b/object_test.go @@ -129,7 +129,7 @@ func TestObjectService_Options(t *testing.T) { }) opt := &ObjectOptionsOptions{ - Origin: "www.qq.com", + Origin: "www.qq.com", AccessControlRequestMethod: "PUT", } diff --git a/service_test.go b/service_test.go index f45a57c..b5c1cda 100644 --- a/service_test.go +++ b/service_test.go @@ -48,13 +48,13 @@ func TestServiceService_Get(t *testing.T) { }, Buckets: []Bucket{ { - Name: "huadong-1253846586", - Region: "ap-shanghai", + Name: "huadong-1253846586", + Region: "ap-shanghai", CreationDate: "2017-06-16T13:08:28Z", }, { - Name: "huanan-1253846586", - Region: "ap-guangzhou", + Name: "huanan-1253846586", + Region: "ap-guangzhou", CreationDate: "2017-06-10T09:00:07Z", }, },