From e6bb14c76c1d154a540f8d324c2a5bc1aa9b20a6 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Mon, 26 May 2025 10:34:57 +0800 Subject: [PATCH 1/3] add --- .../services/cos/resource_tc_cos_bucket.go | 39 ++++++++++++++++--- .../services/cos/resource_tc_cos_bucket.md | 25 ++++++++++++ .../services/cos/service_tencentcloud_cos.go | 20 ++++++++-- website/docs/r/cos_bucket.html.markdown | 29 +++++++++++++- 4 files changed, 103 insertions(+), 10 deletions(-) diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index 3d92256ae6..d7dbeee9a2 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -39,9 +39,23 @@ func originPullRules() *schema.Resource { "sync_back_to_source": { Type: schema.TypeBool, Optional: true, - Default: false, + Computed: true, + Deprecated: "It has been deprecated from version 1.81.196. Please use `back_to_source_mode` instead.", Description: "If `true`, COS will not return 3XX status code when pulling data from an origin server. Current available zone: ap-beijing, ap-shanghai, ap-singapore, ap-mumbai.", }, + "back_to_source_mode": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"Proxy", "Mirror", "Redirect"}), + Description: "Back to source mode. Allow value: Proxy, Mirror, Redirect.", + }, + "http_redirect_code": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Redirect code. Effective when `back_to_source_mode` is `Redirect`. ex: 301, 302, 307. Default is 302.", + }, "prefix": { Type: schema.TypeString, Optional: true, @@ -1670,10 +1684,25 @@ func resourceTencentCloudCosBucketOriginPullUpdate(ctx context.Context, service } ) - if v := dMap["sync_back_to_source"]; v.(bool) { - item.OriginType = "Mirror" - } else { - item.OriginType = "Proxy" + // has deprecated + if v, ok := dMap["sync_back_to_source"]; ok { + if v.(bool) { + item.OriginType = "Mirror" + } else { + item.OriginType = "Proxy" + } + } + + if v, ok := dMap["back_to_source_mode"].(string); ok && v != "" { + item.OriginType = v + } + + if v, ok := dMap["http_redirect_code"].(string); ok && v != "" { + if item.OriginType == "Redirect" { + item.OriginParameter.HttpRedirectCode = v + } else { + return fmt.Errorf("Parameter `http_redirect_code` can be set only if `back_to_source_mode` is `Redirect`.") + } } if v, ok := dMap["priority"]; ok { diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.md b/tencentcloud/services/cos/resource_tc_cos_bucket.md index d3095ae129..74d59689d4 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.md +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.md @@ -281,6 +281,31 @@ resource "tencentcloud_cos_bucket" "bucket_with_cors" { } ``` +Using Origin pull + +```hcl +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id + uin = data.tencentcloud_user_info.info.uin + owner_uin = data.tencentcloud_user_info.info.owner_uin +} + +resource "tencentcloud_cos_bucket" "example" { + bucket = "tf-bucket-basic10-${local.app_id}" + acl = "public-read" + origin_pull_rules { + priority = 1 + back_to_source_mode = "Redirect" + http_redirect_code = "301" + protocol = "FOLLOW" + host = "1.1.1.1" + follow_query_string = true + } +} +``` + Using CORS with CDC ```hcl diff --git a/tencentcloud/services/cos/service_tencentcloud_cos.go b/tencentcloud/services/cos/service_tencentcloud_cos.go index eb222be212..600e9162a1 100644 --- a/tencentcloud/services/cos/service_tencentcloud_cos.go +++ b/tencentcloud/services/cos/service_tencentcloud_cos.go @@ -1300,10 +1300,11 @@ func (me *CosService) GetBucketPullOrigin(ctx context.Context, bucket string) (r return nil, errRet } + header, _ := json.Marshal(response.Header) resp, _ := json.Marshal(originConfig) - log.Printf("[DEBUG]%s api[%s] success, request body response body [%s]\n", - logId, "GetBucketPullOrigin", resp) + log.Printf("[DEBUG]%s api[%s] success, request body request header [%s], response body [%s]\n", + logId, "GetBucketPullOrigin", header, resp) rules := make([]map[string]interface{}, 0) @@ -1318,12 +1319,17 @@ func (me *CosService) GetBucketPullOrigin(ctx context.Context, bucket string) (r item["prefix"] = helper.String(rule.OriginCondition.Prefix) } + // has deprecated if rule.OriginType == "Mirror" { item["sync_back_to_source"] = helper.Bool(true) } else if rule.OriginType == "Proxy" { item["sync_back_to_source"] = helper.Bool(false) } + if rule.OriginType != "" { + item["back_to_source_mode"] = helper.String(rule.OriginType) + } + if rule.OriginParameter != nil { if rule.OriginParameter.HttpHeader != nil { if len(rule.OriginParameter.HttpHeader.NewHttpHeaders) != 0 { @@ -1345,6 +1351,11 @@ func (me *CosService) GetBucketPullOrigin(ctx context.Context, bucket string) (r } } + + if rule.OriginParameter.HttpRedirectCode != "" && rule.OriginType == "Redirect" { + item["http_redirect_code"] = helper.String(rule.OriginParameter.HttpRedirectCode) + } + item["protocol"] = helper.String(rule.OriginParameter.Protocol) item["follow_redirection"] = helper.Bool(rule.OriginParameter.FollowRedirection) item["follow_query_string"] = helper.Bool(rule.OriginParameter.FollowQueryString) @@ -1374,6 +1385,7 @@ func (me *CosService) PutBucketPullOrigin(ctx context.Context, bucket string, ru ratelimit.Check("PutBucketPullOrigin") response, err := me.client.UseTencentCosClientNew(bucket, cdcId).Bucket.PutOrigin(ctx, opt) + header, _ := json.Marshal(response.Header) req, _ := json.Marshal(opt) resp, _ := json.Marshal(response.Response.Body) @@ -1389,8 +1401,8 @@ func (me *CosService) PutBucketPullOrigin(ctx context.Context, bucket string, ru return } - log.Printf("[DEBUG]%s api[PutBucketPullOrigin] success, request body [%s], response body [%s]\n", - logId, req, resp) + log.Printf("[DEBUG]%s api[PutBucketPullOrigin] success, request header [%s], request body [%s], response body [%s]\n", + logId, header, req, resp) return nil } diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index a68ca295c7..f90d10ebfe 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -292,6 +292,31 @@ resource "tencentcloud_cos_bucket" "bucket_with_cors" { } ``` +### Using Origin pull + +```hcl +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id + uin = data.tencentcloud_user_info.info.uin + owner_uin = data.tencentcloud_user_info.info.owner_uin +} + +resource "tencentcloud_cos_bucket" "example" { + bucket = "tf-bucket-basic10-${local.app_id}" + acl = "public-read" + origin_pull_rules { + priority = 1 + back_to_source_mode = "Redirect" + http_redirect_code = "301" + protocol = "FOLLOW" + host = "1.1.1.1" + follow_query_string = true + } +} +``` + ### Using CORS with CDC ```hcl @@ -493,13 +518,15 @@ The `origin_pull_rules` object supports the following: * `host` - (Required, String) Allows only a domain name or IP address. You can optionally append a port number to the address. * `priority` - (Required, Int) Priority of origin-pull rules, do not set the same value for multiple rules. +* `back_to_source_mode` - (Optional, String) Back to source mode. Allow value: Proxy, Mirror, Redirect. * `custom_http_headers` - (Optional, Map) Specifies the custom headers that you can add for COS to access your origin server. * `follow_http_headers` - (Optional, Set) Specifies the pass through headers when accessing the origin server. * `follow_query_string` - (Optional, Bool) Specifies whether to pass through COS request query string when accessing the origin server. * `follow_redirection` - (Optional, Bool) Specifies whether to follow 3XX redirect to another origin server to pull data from. +* `http_redirect_code` - (Optional, String) Redirect code. Effective when `back_to_source_mode` is `Redirect`. ex: 301, 302, 307. Default is 302. * `prefix` - (Optional, String) Triggers the origin-pull rule when the requested file name matches this prefix. * `protocol` - (Optional, String) the protocol used for COS to access the specified origin server. The available value include `HTTP`, `HTTPS` and `FOLLOW`. -* `sync_back_to_source` - (Optional, Bool) If `true`, COS will not return 3XX status code when pulling data from an origin server. Current available zone: ap-beijing, ap-shanghai, ap-singapore, ap-mumbai. +* `sync_back_to_source` - (Optional, Bool, **Deprecated**) It has been deprecated from version 1.81.196. Please use `back_to_source_mode` instead. If `true`, COS will not return 3XX status code when pulling data from an origin server. Current available zone: ap-beijing, ap-shanghai, ap-singapore, ap-mumbai. The `replica_rules` object supports the following: From b2ceec4e93a68c039a9faeb052560aa619f769e9 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Mon, 26 May 2025 10:38:55 +0800 Subject: [PATCH 2/3] add --- .changelog/3378.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/3378.txt diff --git a/.changelog/3378.txt b/.changelog/3378.txt new file mode 100644 index 0000000000..8685a1a2cf --- /dev/null +++ b/.changelog/3378.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cos_bucket: update `origin_pull_rules` add new params +``` \ No newline at end of file From a391083451382267c94ef004019633ca98fde339 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Thu, 29 May 2025 15:00:13 +0800 Subject: [PATCH 3/3] add --- go.mod | 2 +- go.sum | 4 + .../services/cos/resource_tc_cos_bucket.go | 6 +- .../services/cos/service_tencentcloud_cos.go | 4 +- .../tencentyun/cos-go-sdk-v5/CHANGELOG.md | 53 +++-- .../tencentyun/cos-go-sdk-v5/bucket_origin.go | 8 +- .../cos-go-sdk-v5/bucket_replication.go | 25 ++- .../github.com/tencentyun/cos-go-sdk-v5/ci.go | 73 +++++-- .../tencentyun/cos-go-sdk-v5/ci_doc.go | 41 +++- .../tencentyun/cos-go-sdk-v5/ci_media.go | 189 +++++++++++++++--- .../cos-go-sdk-v5/ci_metainsight.go | 33 +-- .../tencentyun/cos-go-sdk-v5/cos.go | 19 +- .../tencentyun/cos-go-sdk-v5/helper.go | 4 + .../tencentyun/cos-go-sdk-v5/object.go | 9 +- vendor/modules.txt | 2 +- 15 files changed, 374 insertions(+), 98 deletions(-) diff --git a/go.mod b/go.mod index fb4537c7c8..56b34b3296 100644 --- a/go.mod +++ b/go.mod @@ -100,7 +100,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1163 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 - github.com/tencentyun/cos-go-sdk-v5 v0.7.64 + github.com/tencentyun/cos-go-sdk-v5 v0.7.66 github.com/yangwenmai/ratelimit v0.0.0-20180104140304-44221c2292e1 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 25b312b2c9..5cbb1531e2 100644 --- a/go.sum +++ b/go.sum @@ -1145,6 +1145,10 @@ github.com/tencentyun/cos-go-sdk-v5 v0.7.64-0.20250324024831-9ab072216e10 h1:0YE github.com/tencentyun/cos-go-sdk-v5 v0.7.64-0.20250324024831-9ab072216e10/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= github.com/tencentyun/cos-go-sdk-v5 v0.7.64 h1:2ADzzr+hcWl4Fw44DwXe0btlVzAYkdvHQ4glUyR0+mM= github.com/tencentyun/cos-go-sdk-v5 v0.7.64/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66-0.20250526100824-edd430d7fffb h1:UtCUmXCVOZz1XtgUhizhtzkIcmb2yRbC+IL3f/7MSxs= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66-0.20250526100824-edd430d7fffb/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66 h1:O4O6EsozBoDjxWbltr3iULgkI7WPj/BFNlYTXDuE64E= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= diff --git a/tencentcloud/services/cos/resource_tc_cos_bucket.go b/tencentcloud/services/cos/resource_tc_cos_bucket.go index d7dbeee9a2..5828e5124d 100644 --- a/tencentcloud/services/cos/resource_tc_cos_bucket.go +++ b/tencentcloud/services/cos/resource_tc_cos_bucket.go @@ -1673,7 +1673,7 @@ func resourceTencentCloudCosBucketOriginPullUpdate(ctx context.Context, service HTTPStatusCode: "404", }, OriginParameter: &cos.BucketOriginParameter{ - CopyOriginData: true, + CopyOriginData: helper.Bool(true), HttpHeader: &cos.BucketOriginHttpHeader{}, }, OriginInfo: &cos.BucketOriginInfo{ @@ -1720,10 +1720,10 @@ func resourceTencentCloudCosBucketOriginPullUpdate(ctx context.Context, service item.OriginInfo.HostInfo = &tmpHost } if v, ok := dMap["follow_query_string"]; ok { - item.OriginParameter.FollowQueryString = v.(bool) + item.OriginParameter.FollowQueryString = helper.Bool(v.(bool)) } if v, ok := dMap["follow_redirection"]; ok { - item.OriginParameter.FollowRedirection = v.(bool) + item.OriginParameter.FollowRedirection = helper.Bool(v.(bool)) } //if v, ok := dMap["copy_origin_data"]; ok { // item.OriginParameter.CopyOriginData = v.(bool) diff --git a/tencentcloud/services/cos/service_tencentcloud_cos.go b/tencentcloud/services/cos/service_tencentcloud_cos.go index 600e9162a1..9bde4fb229 100644 --- a/tencentcloud/services/cos/service_tencentcloud_cos.go +++ b/tencentcloud/services/cos/service_tencentcloud_cos.go @@ -1357,8 +1357,8 @@ func (me *CosService) GetBucketPullOrigin(ctx context.Context, bucket string) (r } item["protocol"] = helper.String(rule.OriginParameter.Protocol) - item["follow_redirection"] = helper.Bool(rule.OriginParameter.FollowRedirection) - item["follow_query_string"] = helper.Bool(rule.OriginParameter.FollowQueryString) + item["follow_redirection"] = rule.OriginParameter.FollowRedirection + item["follow_query_string"] = rule.OriginParameter.FollowQueryString } if rule.OriginInfo.HostInfo != nil { diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/CHANGELOG.md b/vendor/github.com/tencentyun/cos-go-sdk-v5/CHANGELOG.md index 0354218ac0..50eac96f61 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/CHANGELOG.md +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/CHANGELOG.md @@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +## [v0.7.65](https://github.com/tencentyun/cos-go-sdk-v5/compare/v0.7.64...v0.7.65) - 2025-04-07 + +1、CI 支持上传时和云上图片人车通用识别功能,支持文件处理的参数。 +2、CI 支持开通桶的文件处理、ASR处理、AI处理、图片处理、文档预览的功能。 +2、COS 修复url为nil是抛出错误。删除对象时增加可选query,更新跨区域复制API。 + +### Merged + +- 更新 bucket replication api [`#313`](https://github.com/tencentyun/cos-go-sdk-v5/pull/313) +- Feature wanjiewu ca27a7eb [`#312`](https://github.com/tencentyun/cos-go-sdk-v5/pull/312) +- Feature jojoliang 5d02f80b [`#311`](https://github.com/tencentyun/cos-go-sdk-v5/pull/311) +- Feature jojoliang a3a5e08e [`#310`](https://github.com/tencentyun/cos-go-sdk-v5/pull/310) +- 不允许请求url为空 [`#309`](https://github.com/tencentyun/cos-go-sdk-v5/pull/309) +- 支持上传时和云上图⽚⼈⻋通⽤识别功能 [`#308`](https://github.com/tencentyun/cos-go-sdk-v5/pull/308) + +### Commits + +- 开通各个桶的功能 [`58e0f87`](https://github.com/tencentyun/cos-go-sdk-v5/commit/58e0f87e8beb8da341ddd33d042859e78333af1e) +- Updated CHANGELOG.md [`dd9e6c8`](https://github.com/tencentyun/cos-go-sdk-v5/commit/dd9e6c87963434ea1f1951a78e9c95b031674070) +- delete object增加query [`1f9da7b`](https://github.com/tencentyun/cos-go-sdk-v5/commit/1f9da7b7f22c5d1d6312135b18933bd6aaf3ccb0) +- 支持文件处理的参数 [`de8e055`](https://github.com/tencentyun/cos-go-sdk-v5/commit/de8e0557b2ad5c6e74a12384edab1c64e42e5281) + +## [v0.7.64](https://github.com/tencentyun/cos-go-sdk-v5/compare/v0.7.63...v0.7.64) - 2025-03-26 + +1、增加 PutFromURL 接口 +2、统一Transport 接口 +3、兼容 bucket origin 参数 + +### Merged + +- Feature jojoliang 7228e310 [`#307`](https://github.com/tencentyun/cos-go-sdk-v5/pull/307) +- Feature jojoliang bbd92f3d [`#306`](https://github.com/tencentyun/cos-go-sdk-v5/pull/306) +- 兼容origin 老api [`#305`](https://github.com/tencentyun/cos-go-sdk-v5/pull/305) + +### Commits + +- 增加put_from_url接口 [`49f4c8b`](https://github.com/tencentyun/cos-go-sdk-v5/commit/49f4c8b9f549b6cf4a94e597276f94b711bcd6b0) +- 统一Transport接口 [`73a066d`](https://github.com/tencentyun/cos-go-sdk-v5/commit/73a066dd66b7b10f2733fe8de7de4dfa0f72a628) +- Updated CHANGELOG.md [`c20803b`](https://github.com/tencentyun/cos-go-sdk-v5/commit/c20803bdb3cd3dfd187f22adc6a9ec532a16e8f2) + ## [v0.7.63](https://github.com/tencentyun/cos-go-sdk-v5/compare/v0.7.62...v0.7.63) - 2025-03-21 1、预签名修复路径合并,用户传什么路径做什么签名,如: ../ 不会合并成 / @@ -580,12 +620,6 @@ COS 预签名URL不对/做编码 ## [v0.7.35](https://github.com/tencentyun/cos-go-sdk-v5/compare/v0.7.34...v0.7.35) - 2022-05-20 -1、CI - 支持媒体信息任务,支持转封装加密,支持流抽取任务 -2、CI - 添加模板类型 -3、校验存储桶名称,内部域名dns打散,检查删除行为 -4、增加获取签名方法 -5、CI - 新增模板类型,工作流增删改查 - ### Merged - Cos v4 dev [`#175`](https://github.com/tencentyun/cos-go-sdk-v5/pull/175) @@ -615,13 +649,6 @@ COS 预签名URL不对/做编码 ## [v0.7.34](https://github.com/tencentyun/cos-go-sdk-v5/compare/v0.7.33...v0.7.34) - 2022-03-01 -1、新增 CI 云查毒接口 -2、图片和视频审核增加未成年人场景,更新图片审核参数 -3、完善工作流实例查询接口 -4、增加 CredentialIface 鉴权接口 -5、新增语音识别任务 -6、更新bucket inventory、增加Bucket Head可选头部参数。 - ### Merged - Cos v4 dev [`#167`](https://github.com/tencentyun/cos-go-sdk-v5/pull/167) diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_origin.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_origin.go index dae8641c4a..a4af7214e4 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_origin.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_origin.go @@ -30,16 +30,16 @@ type BucketOriginCondition struct { type BucketOriginParameter struct { Protocol string `xml:"Protocol,omitempty"` - FollowQueryString bool `xml:"FollowQueryString,omitempty"` + FollowQueryString *bool `xml:"FollowQueryString,omitempty"` HttpHeader *BucketOriginHttpHeader `xml:"HttpHeader,omitempty"` - FollowRedirection bool `xml:"FollowRedirection,omitempty"` + FollowRedirection *bool `xml:"FollowRedirection,omitempty"` HttpRedirectCode string `xml:"HttpRedirectCode,omitempty"` - CopyOriginData bool `xml:"CopyOriginData,omitempty"` + CopyOriginData *bool `xml:"CopyOriginData,omitempty"` } type BucketOriginHttpHeader struct { // 目前还不支持 FollowAllHeaders - FollowAllHeaders bool `xml:"FollowAllHeaders,omitempty"` + FollowAllHeaders *bool `xml:"FollowAllHeaders,omitempty"` NewHttpHeaders []OriginHttpHeader `xml:"NewHttpHeaders>Header,omitempty"` FollowHttpHeaders []OriginHttpHeader `xml:"FollowHttpHeaders>Header,omitempty"` ForbidFollowHeaders []OriginHttpHeader `xml:"ForbidFollowHeaders>Header,omitempty"` diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_replication.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_replication.go index cd23a99ebd..3dc6235ff0 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_replication.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/bucket_replication.go @@ -6,18 +6,35 @@ import ( "net/http" ) +type DeleteMarkerReplication struct { + Status string `xml:"Status"` +} + // ReplicationDestination is the sub struct of BucketReplicationRule type ReplicationDestination struct { Bucket string `xml:"Bucket"` StorageClass string `xml:"StorageClass,omitempty"` } +type ReplicationFilterAnd struct { + Prefix string `xml:"Prefix"` + Tag []ObjectTaggingTag `xml:"Tag,omitempty"` +} + +type ReplicationFilter struct { + And *ReplicationFilterAnd `xml:"And,omitempty"` + Prefix string `xml:"Prefix,omitempty"` +} + // BucketReplicationRule is the main param of replication type BucketReplicationRule struct { - ID string `xml:"ID,omitempty"` - Status string `xml:"Status"` - Prefix string `xml:"Prefix"` - Destination *ReplicationDestination `xml:"Destination"` + ID string `xml:"ID,omitempty"` + Status string `xml:"Status"` + Priority int `xml:"Priority,omitempty"` + Prefix string `xml:"Prefix,omitempty"` + Filter *ReplicationFilter `xml:"Filter,omitempty"` + Destination *ReplicationDestination `xml:"Destination"` + DeleteMarkerReplication *DeleteMarkerReplication `xml:"DeleteMarkerReplication,omitempty"` } // PutBucketReplicationOptions is the options of PutBucketReplication diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci.go index d72e145bf2..94508a8fc4 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci.go @@ -40,9 +40,10 @@ func EncodePicOperations(pic *PicOperations) string { } type ImageProcessResult struct { - XMLName xml.Name `xml:"UploadResult"` - OriginalInfo *PicOriginalInfo `xml:"OriginalInfo,omitempty"` - ProcessResults []PicProcessObject `xml:"ProcessResults>Object,omitempty"` + XMLName xml.Name `xml:"UploadResult"` + OriginalInfo *PicOriginalInfo `xml:"OriginalInfo,omitempty"` + ProcessResults []PicProcessObject `xml:"ProcessResults>Object,omitempty"` + ImgTargetRecResult *ImgTargetRecResult `xml:"ImgTargetRecResult,omitempty"` // 历史兼容考虑不建议抽象单独struct防止客户使用影响 ProcessResultsText string `xml:"ProcessResults>Text,omitempty"` ProcessResultsWatermarkStatusCode int `xml:"ProcessResults>WatermarkStatusCode,omitempty"` @@ -73,6 +74,9 @@ type PicProcessObject struct { WatermarkStatus int `xml:"WatermarkStatus,omitempty"` CodeStatus int `xml:"CodeStatus,omitempty"` QRcodeInfo []QRcodeInfo `xml:"QRcodeInfo,omitempty"` + FrameCount int `xml:"FrameCount,omitempty"` + Md5 string `xml:"Md5,omitempty"` + BitDepth int `xml:"BitDepth,omitempty"` } type QRcodeInfo struct { CodeUrl string `xml:"CodeUrl,omitempty"` @@ -1279,7 +1283,7 @@ type GetQRcodeResultV2 struct { ResultImage string `xml:"ResultImage,omitempty"` } -// 二维码识别-下载时识别 https://cloud.tencent.com/document/product/436/54070 +// GetQRcodeV2 二维码识别-下载时识别 https://cloud.tencent.com/document/product/436/54070 func (s *CIService) GetQRcodeV2(ctx context.Context, name string, cover int, opt *ObjectGetOptions, id ...string) (*GetQRcodeResultV2, *Response, error) { var u string if len(id) == 1 { @@ -2339,6 +2343,7 @@ type AIImageColoringOptions struct { DetectUrl string `url:"detect-url,omitempty"` } +// GetAIImageColoringV2 todo func (s *CIService) GetAIImageColoringV2(ctx context.Context, name string, opt *AIImageColoringOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, @@ -2363,12 +2368,12 @@ func (s *CIService) GetAISuperResolution(ctx context.Context, name string) (*Res return resp, err } -// AIImageColoringOptions TODO +// AISuperResolutionOptions TODO type AISuperResolutionOptions struct { DetectUrl string `url:"detect-url,omitempty"` } -// GetAISuperResolution https://cloud.tencent.com/document/product/460/83793 +// GetAISuperResolutionV2 https://cloud.tencent.com/document/product/460/83793 func (s *CIService) GetAISuperResolutionV2(ctx context.Context, name string, opt *AISuperResolutionOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, @@ -2401,7 +2406,7 @@ type AIEnhanceImageOptions struct { IgnoreError int `url:"ignore-error,omitempty"` } -// GetAIEnhanceImage https://cloud.tencent.com/document/product/460/83792 +// GetAIEnhanceImageV2 https://cloud.tencent.com/document/product/460/83792 func (s *CIService) GetAIEnhanceImageV2(ctx context.Context, name string, opt *AIEnhanceImageOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, @@ -2572,6 +2577,7 @@ type AIGameRecResult struct { } `xml:"GameLabels,omitempty"` } +// AIGameRec 游戏识别 func (s *CIService) AIGameRec(ctx context.Context, obj string, opt *AIGameRecOptions) (*AIGameRecResult, *Response, error) { var res AIGameRecResult sendOpt := &sendOptions{ @@ -2592,7 +2598,7 @@ type AIPicMattingOptions struct { OptHeaders *OptHeaders `header:"-, omitempty" url:"-" json:"-" xml:"-"` } -// 通用抠图 +// AIPicMatting 通用抠图 // https://cloud.tencent.com/document/product/460/106750 func (s *CIService) AIPicMatting(ctx context.Context, ObjectKey string, opt *AIPicMattingOptions) (*Response, error) { sendOpt := sendOptions{ @@ -2613,7 +2619,7 @@ type AIPortraitMattingOptions struct { OptHeaders *OptHeaders `header:"-, omitempty" url:"-" json:"-" xml:"-"` } -// 人像抠图 +// AIPortraitMatting 人像抠图 // https://cloud.tencent.com/document/product/460/106751 func (s *CIService) AIPortraitMatting(ctx context.Context, ObjectKey string, opt *AIPortraitMattingOptions) (*Response, error) { @@ -2720,7 +2726,7 @@ type AIRecognitionOptions struct { OptHeaders *OptHeaders `header:"-, omitempty" url:"-" json:"-" xml:"-"` } -// 多AI接口合一 +// AIRecognition 多AI接口合一 func (s *CIService) AIRecognition(ctx context.Context, ObjectKey string, opt *AIRecognitionOptions) (*AIRecognitionResult, *Response, error) { var res AIRecognitionResult sendOpt := sendOptions{ @@ -2753,7 +2759,7 @@ type ImageSlimResult struct { type ImageSlimOptions ImageSlim -// 开通 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95042 +// PutImageSlim 开通 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95042 func (s *CIService) PutImageSlim(ctx context.Context, opt *ImageSlimOptions) (*Response, error) { sendOpt := &sendOptions{ baseURL: s.client.BaseURL.CIURL, @@ -2765,7 +2771,7 @@ func (s *CIService) PutImageSlim(ctx context.Context, opt *ImageSlimOptions) (*R return resp, err } -// 查询 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95043 +// GetImageSlim 查询 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95043 func (s *CIService) GetImageSlim(ctx context.Context) (*ImageSlimResult, *Response, error) { var res ImageSlimResult sendOpt := &sendOptions{ @@ -2778,7 +2784,7 @@ func (s *CIService) GetImageSlim(ctx context.Context) (*ImageSlimResult, *Respon return &res, resp, err } -// 关闭 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95044 +// DeleteImageSlim 关闭 极智压缩ImageSlim https://cloud.tencent.com/document/product/460/95044 func (s *CIService) DeleteImageSlim(ctx context.Context) (*Response, error) { sendOpt := &sendOptions{ baseURL: s.client.BaseURL.CIURL, @@ -2789,7 +2795,7 @@ func (s *CIService) DeleteImageSlim(ctx context.Context) (*Response, error) { return resp, err } -// CIBucketsOptions is the option of CIBuckets +// DescribeCIBucketsOptions is the option of CIBuckets type DescribeCIBucketsOptions struct { BucketName string `url:"bucketName,omitempty"` TagKey string `url:"tagKey,omitempty"` @@ -2798,6 +2804,7 @@ type DescribeCIBucketsOptions struct { PageSize int `url:"pageSize,omitempty"` } +// CIBucketList is the result of CIBuckets type CIBucketList struct { BucketId string `xml:"BucketId,omitempty"` BucketName string `xml:"BucketName,omitempty"` @@ -2807,6 +2814,7 @@ type CIBucketList struct { Status string `xml:"Status,omitempty"` } +// CIBucketsResult is the result of CIBuckets type CIBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` @@ -2816,6 +2824,7 @@ type CIBucketsResult struct { CIBucketList []CIBucketList `xml:"CIBucketList,omitempty"` } +// DescribeCIBuckets 查询CI桶列表 func (s *CIService) DescribeCIBuckets(ctx context.Context, opt *DescribeCIBucketsOptions) (*CIBucketsResult, *Response, error) { var res CIBucketsResult sendOpt := &sendOptions{ @@ -2828,3 +2837,39 @@ func (s *CIService) DescribeCIBuckets(ctx context.Context, opt *DescribeCIBucket resp, err := s.client.send(ctx, sendOpt) return &res, resp, err } + +// ImgTargetRecResult 图片识别结果 +type ImgTargetRecResult struct { + BodyDetailInfos struct { + BodyDetailInfo []struct { + X string `xml:"X"` + Y string `xml:"Y"` + Width string `xml:"Width"` + Height string `xml:"Height"` + } `xml:"BodyDetailInfo"` + } `xml:"BodyDetailInfos"` + CarDetailInfos struct { + CarDetailInfo []struct { + X string `xml:"X"` + Y string `xml:"Y"` + Width string `xml:"Width"` + Height string `xml:"Height"` + } `xml:"CarDetailInfo"` + } `xml:"CarDetailInfos"` + FaceDetailInfos struct { + FaceDetailInfo []struct { + X string `xml:"X"` + Y string `xml:"Y"` + Width string `xml:"Width"` + Height string `xml:"Height"` + } `xml:"FaceDetailInfo"` + } `xml:"FaceDetailInfos"` + PlateDetailInfos struct { + PlateDetailInfo []struct { + X string `xml:"X"` + Y string `xml:"Y"` + Width string `xml:"Width"` + Height string `xml:"Height"` + } `xml:"PlateDetailInfo"` + } `xml:"PlateDetailInfos"` +} diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_doc.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_doc.go index df1ebf376f..6a538429a5 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_doc.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_doc.go @@ -84,7 +84,7 @@ type CreateDocProcessJobsResult struct { JobsDetail DocProcessJobDetail `xml:"JobsDetail,omitempty"` } -// 创建文档预览任务 https://cloud.tencent.com/document/product/436/54056 +// CreateDocProcessJobs 创建文档预览任务 https://cloud.tencent.com/document/product/436/54056 func (s *CIService) CreateDocProcessJobs(ctx context.Context, opt *CreateDocProcessJobsOptions) (*CreateDocProcessJobsResult, *Response, error) { var res CreateDocProcessJobsResult sendOpt := sendOptions{ @@ -104,7 +104,7 @@ type DescribeDocProcessJobResult struct { NonExistJobIds string `xml:"NonExistJobIds,omitempty"` } -// 查询文档预览任务 https://cloud.tencent.com/document/product/436/54095 +// DescribeDocProcessJob 查询文档预览任务 https://cloud.tencent.com/document/product/436/54095 func (s *CIService) DescribeDocProcessJob(ctx context.Context, jobid string) (*DescribeDocProcessJobResult, *Response, error) { var res DescribeDocProcessJobResult sendOpt := sendOptions{ @@ -134,7 +134,7 @@ type DescribeDocProcessJobsResult struct { NextToken string `xml:"NextToken,omitempty"` } -// 拉取符合条件的文档预览任务 https://cloud.tencent.com/document/product/436/54096 +// DescribeDocProcessJobs 拉取符合条件的文档预览任务 https://cloud.tencent.com/document/product/436/54096 func (s *CIService) DescribeDocProcessJobs(ctx context.Context, opt *DescribeDocProcessJobsOptions) (*DescribeDocProcessJobsResult, *Response, error) { var res DescribeDocProcessJobsResult sendOpt := sendOptions{ @@ -183,7 +183,7 @@ type DocProcessQueueNotifyConfig struct { Event string `xml:"Event,omitempty"` } -// 查询文档预览队列 https://cloud.tencent.com/document/product/436/54055 +// DescribeDocProcessQueues 查询文档预览队列 https://cloud.tencent.com/document/product/436/54055 func (s *CIService) DescribeDocProcessQueues(ctx context.Context, opt *DescribeDocProcessQueuesOptions) (*DescribeDocProcessQueuesResult, *Response, error) { var res DescribeDocProcessQueuesResult sendOpt := sendOptions{ @@ -211,7 +211,7 @@ type UpdateDocProcessQueueResult struct { Queue *DocProcessQueue `xml:"Queue"` } -// 更新文档预览队列 https://cloud.tencent.com/document/product/436/54094 +// UpdateDocProcessQueue 更新文档预览队列 https://cloud.tencent.com/document/product/436/54094 func (s *CIService) UpdateDocProcessQueue(ctx context.Context, opt *UpdateDocProcessQueueOptions) (*UpdateDocProcessQueueResult, *Response, error) { var res UpdateDocProcessQueueResult sendOpt := sendOptions{ @@ -249,7 +249,7 @@ type DocProcessBucket struct { AliasBucketId string `xml:"AliasBucketId,omitempty"` } -// 查询文档预览开通状态 https://cloud.tencent.com/document/product/436/54057 +// DescribeDocProcessBuckets 开通文档预览功能 https://cloud.tencent.com/document/product/460/103608 func (s *CIService) DescribeDocProcessBuckets(ctx context.Context, opt *DescribeDocProcessBucketsOptions) (*DescribeDocProcessBucketsResult, *Response, error) { var res DescribeDocProcessBucketsResult sendOpt := sendOptions{ @@ -263,6 +263,29 @@ func (s *CIService) DescribeDocProcessBuckets(ctx context.Context, opt *Describe return &res, resp, err } +type CreateDocProcessBucketOptions struct { +} + +type CreateDocProcessBucketResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + DocBucket DocProcessBucket `xml:"DocBucket,omitempty"` +} + +// CreateDocProcessBucket 查询文档预览开通状态 https://cloud.tencent.com/document/product/436/54057 +func (s *CIService) CreateDocProcessBucket(ctx context.Context, opt *CreateDocProcessBucketOptions) (*CreateDocProcessBucketResult, *Response, error) { + var res CreateDocProcessBucketResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/docbucket", + optQuery: opt, + method: http.MethodPost, + 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"` @@ -282,7 +305,7 @@ type DocPreviewOptions struct { ImageDpi int `url:"imageDpi,omitempty"` } -// 同步请求接口 https://cloud.tencent.com/document/product/436/54058 +// DocPreview 同步请求接口 https://cloud.tencent.com/document/product/436/54058 func (s *CIService) DocPreview(ctx context.Context, name string, opt *DocPreviewOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, @@ -327,7 +350,7 @@ func (w *CIDocCompareResult) Write(p []byte) (n int, err error) { return len(p), nil } -// DocCompare TODO +// CIDocCompare TODO func (s *CIService) CIDocCompare(ctx context.Context, opt *CIDocCompareOptions) (*Response, *CIDocCompareResult, error) { var res CIDocCompareResult sendOpt := sendOptions{ @@ -397,7 +420,7 @@ type HtmlPptParams struct { IsShowBottomStatusBar bool `json:"isShowBottomStatusBar"` } -// 文档转html https://cloud.tencent.com/document/product/460/52518 +// DocPreviewHTML 文档转html https://cloud.tencent.com/document/product/460/52518 func (s *CIService) DocPreviewHTML(ctx context.Context, name string, opt *DocPreviewHTMLOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_media.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_media.go index f943514859..ddf4bddc51 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_media.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_media.go @@ -300,8 +300,9 @@ type ConcatTemplate struct { // SceneChangeInfo 转场参数 type SceneChangeInfo struct { - Mode string `xml:"Mode,omitempty"` - Time string `xml:"Time,omitempty"` + Mode string `xml:"Mode,omitempty"` + Time string `xml:"Time,omitempty"` + TransitionType string `xml:"TransitionType,omitempty"` } // SpriteSnapshotConfig TODO @@ -548,6 +549,7 @@ type VideoTagResultStreamDataDataObjectTags struct { TimeStamp string `xml:"TimeStamp,omitempty"` } +// VideoTagResultStreamDataDataLabels TODO type VideoTagResultStreamDataDataLabels struct { First string `xml:"First,omitempty"` Second string `xml:"Second,omitempty"` @@ -572,7 +574,7 @@ type QualityEstimate struct { } `xml:"VqaPlusResult,omitempty"` } -// QualityEstimate TODO +// QualityEstimateConfig 视频质量检查的参数 type QualityEstimateConfig struct { Rotate string `xml:"Rotate,omitempty"` Mode string `xml:"Mode,omitempty"` @@ -779,6 +781,7 @@ type MediaProcessJobOperation struct { SnapshotPrefix string `xml:"SnapshotPrefix,omitempty"` ImageOCR *ImageOCRTemplate `xml:"ImageOCR,omitempty"` Detection *ImageOCRDetection `xml:"Detection,omitempty"` + CustomId string `xml:"CustomId,omitempty"` } // CreatePicJobsOptions TODO @@ -1267,19 +1270,19 @@ func (s *CIService) UpdateMediaProcessQueue(ctx context.Context, opt *UpdateMedi return &res, resp, err } -// DescribePicProcessBucketsOptions TODO +// DescribePicProcessBucketsOptions 描述图片处理桶的参数 type DescribePicProcessBucketsOptions DescribeMediaProcessBucketsOptions -// DescribeAIProcessBucketsOptions TODO +// DescribeAIProcessBucketsOptions 描述AI处理桶的参数 type DescribeAIProcessBucketsOptions DescribeMediaProcessBucketsOptions -// DescribeASRProcessBucketsOptions TODO +// DescribeASRProcessBucketsOptions 描述ASR处理桶的参数 type DescribeASRProcessBucketsOptions DescribeMediaProcessBucketsOptions -// DescribeFileProcessBucketsOptions TODO +// DescribeFileProcessBucketsOptions 描述文件处理桶的参数 type DescribeFileProcessBucketsOptions DescribeMediaProcessBucketsOptions -// DescribeMediaProcessBucketsOptions TODO +// DescribeMediaProcessBucketsOptions 描述媒体处理桶的参数 type DescribeMediaProcessBucketsOptions struct { Regions string `url:"regions,omitempty"` BucketNames string `url:"bucketNames,omitempty"` @@ -1288,7 +1291,7 @@ type DescribeMediaProcessBucketsOptions struct { PageSize int `url:"pageSize,omitempty"` } -// DescribeMediaProcessBucketsResult TODO +// DescribeMediaProcessBucketsResult 描述媒体处理桶的结果 type DescribeMediaProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` @@ -1298,7 +1301,7 @@ type DescribeMediaProcessBucketsResult struct { MediaBucketList []MediaProcessBucket `xml:"MediaBucketList,omitempty"` } -// DescribeMediaProcessBucketsResult TODO +// DescribeMediaProcessBucketsResult 描述图片处理桶的结果 type DescribePicProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` @@ -1308,7 +1311,7 @@ type DescribePicProcessBucketsResult struct { MediaBucketList []MediaProcessBucket `xml:"PicBucketList,omitempty"` } -// DescribeMediaProcessBucketsResult TODO +// DescribeMediaProcessBucketsResult 描述AI处理桶的结果 type DescribeAIProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` @@ -1318,7 +1321,7 @@ type DescribeAIProcessBucketsResult struct { MediaBucketList []MediaProcessBucket `xml:"AiBucketList,omitempty"` } -// DescribeMediaProcessBucketsResult TODO +// DescribeMediaProcessBucketsResult 描述ASR处理桶的结果 type DescribeASRProcessBucketsResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` @@ -1338,7 +1341,7 @@ type DescribeFileProcessBucketsResult struct { FileBucketList []MediaProcessBucket `xml:"FileBucketList,omitempty"` } -// MediaProcessBucket TODO +// MediaProcessBucket 媒体处理bucket type MediaProcessBucket struct { Name string `xml:"Name,omitempty"` BucketId string `xml:"BucketId,omitempty"` @@ -1346,15 +1349,18 @@ type MediaProcessBucket struct { CreateTime string `xml:"CreateTime,omitempty"` } +// CreateMediaProcessBucketOptions 开通媒体处理服务参数 type CreateMediaProcessBucketOptions struct { } +// CreateMediaProcessBucketResult 开通媒体处理服务返回 type CreateMediaProcessBucketResult struct { XMLName xml.Name `xml:"Response"` RequestId string `xml:"RequestId,omitempty"` MediaBucket MediaProcessBucket `xml:"MediaBucket,omitempty"` } +// CreateMediaProcessBucket 开通媒体处理服务 https://cloud.tencent.com/document/product/436/115298 func (s *CIService) CreateMediaProcessBucket(ctx context.Context, opt *CreateMediaProcessBucketOptions) (*CreateMediaProcessBucketResult, *Response, error) { var res CreateMediaProcessBucketResult sendOpt := sendOptions{ @@ -1382,6 +1388,33 @@ func (s *CIService) DescribeMediaProcessBuckets(ctx context.Context, opt *Descri return &res, resp, err } +// CreatePicProcessBucketOptions 开通图片处理异步能力参数 +type CreatePicProcessBucketOptions struct { +} + +// PicProcessBucket 图片处理桶信息别名 +type PicProcessBucket MediaProcessBucket + +// CreatePicProcessBucketResult 开通图片处理异步能力返回 +type CreatePicProcessBucketResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + PicBucket PicProcessBucket `xml:"PicBucket,omitempty"` +} + +// CreatePicProcessBucket 开通图片处理异步能力 https://cloud.tencent.com/document/product/460/95749 +func (s *CIService) CreatePicProcessBucket(ctx context.Context, opt *CreatePicProcessBucketOptions) (*CreatePicProcessBucketResult, *Response, error) { + var res CreatePicProcessBucketResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/picbucket", + method: http.MethodPost, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + // DescribePicProcessBuckets TODO func (s *CIService) DescribePicProcessBuckets(ctx context.Context, opt *DescribePicProcessBucketsOptions) (*DescribePicProcessBucketsResult, *Response, error) { var res DescribePicProcessBucketsResult @@ -1396,6 +1429,33 @@ func (s *CIService) DescribePicProcessBuckets(ctx context.Context, opt *Describe return &res, resp, err } +// CreateAIProcessBucketOptions 开通AI处理能力参数 +type CreateAIProcessBucketOptions struct { +} + +// AIProcessBucket AI处理桶信息别名 +type AIProcessBucket MediaProcessBucket + +// CreateAIProcessBucketResult 开通AI处理能力返回 +type CreateAIProcessBucketResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + AiBucket AIProcessBucket `xml:"AiBucket,omitempty"` +} + +// CreateAIProcessBucket 开通AI处理能力 https://cloud.tencent.com/document/product/460/79593 +func (s *CIService) CreateAIProcessBucket(ctx context.Context, opt *CreateAIProcessBucketOptions) (*CreateAIProcessBucketResult, *Response, error) { + var res CreateAIProcessBucketResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/ai_bucket", + method: http.MethodPost, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + // DescribeAIProcessBuckets TODO func (s *CIService) DescribeAIProcessBuckets(ctx context.Context, opt *DescribeAIProcessBucketsOptions) (*DescribeAIProcessBucketsResult, *Response, error) { var res DescribeAIProcessBucketsResult @@ -1410,6 +1470,33 @@ func (s *CIService) DescribeAIProcessBuckets(ctx context.Context, opt *DescribeA return &res, resp, err } +// CreateASRProcessBucketOptions 开通ASR处理服务参数 +type CreateASRProcessBucketOptions struct { +} + +// ASRBucketBucket ASR处理桶信息别名 +type AsrBucketBucket MediaProcessBucket + +// CreateASRProcessBucketResult 开通ASR处理服务返回 +type CreateASRProcessBucketResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + AsrBucketBucket AsrBucketBucket `xml:"AsrBucket,omitempty"` +} + +// CreateASRProcessBucket 开通ASR处理服务 https://cloud.tencent.com/document/product/460/86377 +func (s *CIService) CreateASRProcessBucket(ctx context.Context, opt *CreateASRProcessBucketOptions) (*CreateASRProcessBucketResult, *Response, error) { + var res CreateASRProcessBucketResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/asrbucket", + method: http.MethodPost, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + // DescribeASRProcessBuckets TODO func (s *CIService) DescribeASRProcessBuckets(ctx context.Context, opt *DescribeASRProcessBucketsOptions) (*DescribeASRProcessBucketsResult, *Response, error) { var res DescribeASRProcessBucketsResult @@ -1424,6 +1511,33 @@ func (s *CIService) DescribeASRProcessBuckets(ctx context.Context, opt *Describe return &res, resp, err } +// CreateFileProcessBucketOptions 开通文件处理服务参数 +type CreateFileProcessBucketOptions struct { +} + +// FileProcessBucket 文件处理桶信息别名 +type FileProcessBucket MediaProcessBucket + +// CreateFileProcessBucketResult 开通文件处理服务返回 +type CreateFileProcessBucketResult struct { + XMLName xml.Name `xml:"Response"` + RequestId string `xml:"RequestId,omitempty"` + FileProcessBucket FileProcessBucket `xml:"FileBucket,omitempty"` +} + +// CreateFileProcessBucket 开通文件处理服务 https://cloud.tencent.com/document/product/460/86377 +func (s *CIService) CreateFileProcessBucket(ctx context.Context, opt *CreateFileProcessBucketOptions) (*CreateFileProcessBucketResult, *Response, error) { + var res CreateFileProcessBucketResult + sendOpt := sendOptions{ + baseURL: s.client.BaseURL.CIURL, + uri: "/file_bucket", + method: http.MethodPost, + result: &res, + } + resp, err := s.client.send(ctx, &sendOpt) + return &res, resp, err +} + // DescribeFileProcessBuckets TODO func (s *CIService) DescribeFileProcessBuckets(ctx context.Context, opt *DescribeFileProcessBucketsOptions) (*DescribeFileProcessBucketsResult, *Response, error) { var res DescribeFileProcessBucketsResult @@ -1566,12 +1680,14 @@ func (s *CIService) GenerateMediaInfo(ctx context.Context, opt *GenerateMediaInf return &res, resp, err } -// GenerateMediaInfoOptions TODO +// GenerateAVInfoOptions 兼容avinfo接口 type GenerateAVInfoOptions struct { XMLName xml.Name `xml:"Request"` Input *JobInput `xml:"Input,omitempty"` OptHeaders *OptHeaders `header:"-,omitempty" url:"-" json:"-" xml:"-"` } + +// GetAVInfoResult 兼容avinfo格式 type GetAVInfoResult struct { Format struct { BitRate string `json:"bit_rate"` @@ -1621,7 +1737,7 @@ type GetAVInfoResult struct { } `json:"streams"` } -// GenerateMediaInfo TODO +// GenerateAVInfo TODO // 生成媒体信息接口,支持大文件,耗时较大请求 func (s *CIService) GenerateAVInfo(ctx context.Context, opt *GenerateAVInfoOptions) (*GetAVInfoResult, *Response, error) { var buf bytes.Buffer @@ -1706,7 +1822,7 @@ func (s *CIService) PostSnapshot(ctx context.Context, opt *PostSnapshotOptions) return &res, resp, err } -// PostCISnapshot +// PostCISnapshot 发送截图请求到万象ci服务 func (s *CIService) PostCISnapshot(ctx context.Context, opt *PostSnapshotOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.CIURL, @@ -3781,7 +3897,7 @@ type DnaResultDetection struct { Audio DnaResultAudio `xml:"Audio,omitempty"` } -// DnaResultDetection DNA任务结果 +// DnaResultMatchDetail DNA任务结果 type DnaResultMatchDetail struct { MatchStartTime int `xml:"MatchStartTime,omitempty"` MatchEndTime int `xml:"MatchEndTime,omitempty"` @@ -3868,7 +3984,7 @@ type DNADbFiles struct { CreateTime string `xml:"CreateTime,omitempty"` } -// GetDnaDb 查询 DNA 库列表 +// GetDnaDbFiles 查询 DNA 库列表 func (s *CIService) GetDnaDbFiles(ctx context.Context, opt *GetDnaDbFilesOptions) (*GetDnaDbFilesResult, *Response, error) { var res GetDnaDbFilesResult sendOpt := sendOptions{ @@ -3887,17 +4003,19 @@ type VocalScore struct { StandardObject string `xml:"StandardObject,omitempty"` } -// VocalScore 音乐评分结果 +// VocalScoreResult 音乐评分结果 type VocalScoreResult struct { PitchScore *VocalScoreResultPitchScore `xml:"PitchScore,omitempty"` RhythemScore *VocalScoreResultRhythemScore `xml:"RhythemScore,omitempty"` } +// VocalScoreResultPitchScore 音高评分 type VocalScoreResultPitchScore struct { TotalScore float64 `xml:"TotalScore,omitempty"` SentenceScores []VocalScoreResultSentenceScores `xml:"SentenceScores,omitempty"` } +// VocalScoreResultRhythemScore 节奏评分 type VocalScoreResultSentenceScores struct { StartTime float64 `xml:"StartTime,omitempty"` EndTime float64 `xml:"EndTime,omitempty"` @@ -3937,7 +4055,7 @@ type ImageInspectProcessResult struct { AutoProcessResult *ImageInspectAutoProcessResult `xml:"AutoProcessResult,omitempty"` } -// ImageInspectResult 黑产检测结果 +// ImageInspectAutoProcessResult 黑产检测结果 type ImageInspectAutoProcessResult struct { Code string `xml:"Code,omitempty"` Message string `xml:"Message,omitempty"` @@ -3966,7 +4084,18 @@ func (w *CosImageInspectProcessResult) Write(p []byte) (n int, err error) { return len(p), nil } -// ImageInspect 黑产检查同步接口 +// CosImageInspect 黑产检查同步接口 +// 参数: +// +// ctx: 上下文对象 +// name: 图片名称 +// opt: 选项对象 +// +// 返回值: +// +// *CosImageInspectProcessResult: 图片检查结果 +// *Response: HTTP响应对象 +// error: 错误信息 func (s *CIService) CosImageInspect(ctx context.Context, name string, opt *CosImageInspectOptions) (*CosImageInspectProcessResult, *Response, error) { var res CosImageInspectProcessResult sendOpt := sendOptions{ @@ -4128,13 +4257,15 @@ type LiveTanscode struct { } type GeneratePlayListJobOperation struct { - Tag string `xml:"Tag,omitempty"` - Output *JobOutput `xml:"Output,omitempty"` - MediaResult *MediaResult `xml:"MediaResult,omitempty"` - MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"` - Transcode *LiveTanscode `xml:"Transcode,omitempty"` - UserData string `xml:"UserData,omitempty"` - JobLevel int `xml:"JobLevel,omitempty"` + Tag string `xml:"Tag,omitempty"` + Output *JobOutput `xml:"Output,omitempty"` + MediaResult *MediaResult `xml:"MediaResult,omitempty"` + MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"` + Transcode *LiveTanscode `xml:"Transcode,omitempty"` + UserData string `xml:"UserData,omitempty"` + JobLevel int `xml:"JobLevel,omitempty"` + Watermark []Watermark `xml:"Watermark,omitempty"` + WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty"` } type CreateGeneratePlayListJobOptions struct { @@ -4240,7 +4371,7 @@ func (s *CIService) DeleteAsrVocabularyTable(ctx context.Context, tableId string return resp, err } -// CreateAsrVocabularyTableOptions TODO +// UpdateAsrVocabularyTableOptions TODO type UpdateAsrVocabularyTableOptions struct { XMLName xml.Name `xml:"Request"` TableId string `xml:"TableId,omitempty"` diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_metainsight.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_metainsight.go index d7454d44c7..15d6b22504 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_metainsight.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_metainsight.go @@ -11,6 +11,7 @@ import ( type MetaInsightService service +// OptHeaders 请求头 type OptHeaders struct { XOptionHeader *http.Header `header:"-,omitempty" url:"-" json:"-" xml:"-"` } @@ -85,7 +86,7 @@ type Dataset struct { DatasetName string `json:"DatasetName"` // 数据集名称 } -// 创建数据集 +// CreateDataset 创建数据集 // https://cloud.tencent.com/document/product/460/106020 func (s *MetaInsightService) CreateDataset(ctx context.Context, opt *CreateDatasetOptions) (*CreateDatasetResult, *Response, error) { var res CreateDatasetResult @@ -112,7 +113,7 @@ type DescribeDatasetsResult struct { NextToken string `json:"NextToken"` // 翻页标记。当任务列表总数大于设置的MaxResults时,用于翻页的Token。符合条件的任务列表未全部返回时,此参数才有值。下一次列出任务列表时将此值作为NextToken传入,将后续的任务列表返回。 } -// 列出数据集 +// DescribeDatasets 列出数据集 // https://cloud.tencent.com/document/product/460/106158 func (s *MetaInsightService) DescribeDatasets(ctx context.Context, opt *DescribeDatasetsOptions) (*DescribeDatasetsResult, *Response, error) { var res DescribeDatasetsResult @@ -136,7 +137,7 @@ type UpdateDatasetResult struct { Dataset *Dataset `json:"Dataset"` // 数据集信息 } -// 更新数据集 +// UpdateDataset 更新数据集 // https://cloud.tencent.com/document/product/460/106156 func (s *MetaInsightService) UpdateDataset(ctx context.Context, opt *UpdateDatasetOptions) (*UpdateDatasetResult, *Response, error) { var res UpdateDatasetResult @@ -160,7 +161,7 @@ type DeleteDatasetResult struct { Dataset *Dataset `json:"Dataset"` // 数据集信息 } -// 删除数据集 +// DeleteDataset 删除数据集 // https://cloud.tencent.com/document/product/460/106157 func (s *MetaInsightService) DeleteDataset(ctx context.Context, opt *DeleteDatasetOptions) (*DeleteDatasetResult, *Response, error) { var res DeleteDatasetResult @@ -185,7 +186,7 @@ type DescribeDatasetResult struct { Dataset *Dataset `json:"Dataset"` // 数据集信息 } -// 查询数据集 +// DescribeDataset 查询数据集 // https://cloud.tencent.com/document/product/460/106155 func (s *MetaInsightService) DescribeDataset(ctx context.Context, opt *DescribeDatasetOptions) (*DescribeDatasetResult, *Response, error) { var res DescribeDatasetResult @@ -226,7 +227,7 @@ type CreateFileMetaIndexResult struct { EventId string `json:"EventId"` // 创建元数据索引的任务ID } -// 创建元数据索引 +// CreateFileMetaIndex 创建元数据索引 // https://cloud.tencent.com/document/product/460/106022 func (s *MetaInsightService) CreateFileMetaIndex(ctx context.Context, opt *CreateFileMetaIndexOptions) (*CreateFileMetaIndexResult, *Response, error) { var res CreateFileMetaIndexResult @@ -252,7 +253,7 @@ type UpdateFileMetaIndexResult struct { EventId string `json:"EventId"` // 创建元数据索引的任务ID } -// 更新元数据索引 +// UpdateFileMetaIndex 更新元数据索引 // https://cloud.tencent.com/document/product/460/106162 func (s *MetaInsightService) UpdateFileMetaIndex(ctx context.Context, opt *UpdateFileMetaIndexOptions) (*UpdateFileMetaIndexResult, *Response, error) { var res UpdateFileMetaIndexResult @@ -295,7 +296,7 @@ type FilesDetail struct { CustomLabels *map[string]string `json:"CustomLabels"` // 文件自定义标签列表。储存您业务自定义的键名、键值对信息,用于在查询时可以据此为筛选项进行检索。 } -// 查询元数据索引 +// DescribeFileMetaIndex 查询元数据索引 // https://cloud.tencent.com/document/product/460/106164 func (s *MetaInsightService) DescribeFileMetaIndex(ctx context.Context, opt *DescribeFileMetaIndexOptions) (*DescribeFileMetaIndexResult, *Response, error) { var res DescribeFileMetaIndexResult @@ -317,7 +318,7 @@ type DeleteFileMetaIndexResult struct { RequestId string `json:"RequestId"` // 请求ID } -// 删除元数据索引 +// DeleteFileMetaIndex 删除元数据索引 // https://cloud.tencent.com/document/product/460/106163 func (s *MetaInsightService) DeleteFileMetaIndex(ctx context.Context, opt *DeleteFileMetaIndexOptions) (*DeleteFileMetaIndexResult, *Response, error) { var res DeleteFileMetaIndexResult @@ -353,7 +354,7 @@ type Binding struct { Detail string `json:"Detail"` // 详情 } -// 绑定存储桶与数据集 +// CreateDatasetBinding 绑定存储桶与数据集 // https://cloud.tencent.com/document/product/460/106159 func (s *MetaInsightService) CreateDatasetBinding(ctx context.Context, opt *CreateDatasetBindingOptions) (*CreateDatasetBindingResult, *Response, error) { var res CreateDatasetBindingResult @@ -378,7 +379,7 @@ type DescribeDatasetBindingResult struct { Binding *Binding `json:"Binding"` // 数据集和 COS Bucket 绑定关系信息的列表。 } -// 查询数据集与存储桶的绑定关系 +// DescribeDatasetBinding 查询数据集与存储桶的绑定关系 // https://cloud.tencent.com/document/product/460/106485 func (s *MetaInsightService) DescribeDatasetBinding(ctx context.Context, opt *DescribeDatasetBindingOptions) (*DescribeDatasetBindingResult, *Response, error) { var res DescribeDatasetBindingResult @@ -403,7 +404,7 @@ type DescribeDatasetBindingsResult struct { Bindings []*Binding `json:"Bindings"` // 数据集和 COS Bucket 绑定关系信息的列表。 } -// 查询绑定关系列表 +// DescribeDatasetBindings 查询绑定关系列表 // https://cloud.tencent.com/document/product/460/106161 func (s *MetaInsightService) DescribeDatasetBindings(ctx context.Context, opt *DescribeDatasetBindingsOptions) (*DescribeDatasetBindingsResult, *Response, error) { var res DescribeDatasetBindingsResult @@ -425,7 +426,7 @@ type DeleteDatasetBindingResult struct { RequestId string `json:"RequestId"` // 请求ID } -// 解绑存储桶与数据集 +// DeleteDatasetBinding 解绑存储桶与数据集 // https://cloud.tencent.com/document/product/460/106160 func (s *MetaInsightService) DeleteDatasetBinding(ctx context.Context, opt *DeleteDatasetBindingOptions) (*DeleteDatasetBindingResult, *Response, error) { var res DeleteDatasetBindingResult @@ -518,7 +519,7 @@ type FileResult struct { DatasetName string `json:"DatasetName"` // 数据集名称。 } -// 简单查询 +// DatasetSimpleQuery 简单查询 // https://cloud.tencent.com/document/product/460/106375 func (s *MetaInsightService) DatasetSimpleQuery(ctx context.Context, opt *DatasetSimpleQueryOptions) (*DatasetSimpleQueryResult, *Response, error) { var res DatasetSimpleQueryResult @@ -566,7 +567,7 @@ type FaceInfosInMeta struct { URI string `json:"URI"` // 资源标识字段,表示需要建立索引的文件地址。 } -// 人脸搜索 +// DatasetFaceSearch 人脸搜索 // https://cloud.tencent.com/document/product/460/106166 func (s *MetaInsightService) DatasetFaceSearch(ctx context.Context, opt *DatasetFaceSearchOptions) (*DatasetFaceSearchResult, *Response, error) { var res DatasetFaceSearchResult @@ -600,7 +601,7 @@ type ImageResult struct { Score int `json:"Score"` // 相关图片匹配得分。 } -// 图像检索 +// SearchImage 图像检索 // https://cloud.tencent.com/document/product/460/106376 func (s *MetaInsightService) SearchImage(ctx context.Context, opt *SearchImageOptions) (*SearchImageResult, *Response, error) { var res SearchImageResult diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/cos.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/cos.go index a8bba27723..d16fa2301b 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/cos.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/cos.go @@ -26,7 +26,7 @@ import ( const ( // Version current go sdk version - Version = "0.7.64" + Version = "0.7.66" UserAgent = "cos-go-sdk-v5/" + Version contentTypeXML = "application/xml" defaultServiceBaseURL = "http://service.cos.myqcloud.com" @@ -87,6 +87,10 @@ func (*BaseURL) innerCheck(u *url.URL, reg *regexp.Regexp) bool { if domainSuffix.MatchString(urlStr) && !reg.MatchString(urlStr) { return false } + host := u.Hostname() + if domainSuffix.MatchString(host) && !reg.MatchString(u.Scheme+"://"+host) { + return false + } return true } @@ -280,6 +284,9 @@ func (c *Client) newRequest(ctx context.Context, baseURL *url.URL, uri, method s if c.invalidURL { return nil, invalidBucketErr } + if baseURL == nil { + return nil, invalidBucketErr + } if !checkURL(baseURL) { host := baseURL.String() if c.BaseURL.MetaInsightURL != baseURL || !metaInsightHostPrefix.MatchString(host) { @@ -471,6 +478,16 @@ func (c *Client) CheckRetrieable(u *url.URL, resp *Response, err error, secondLa if err != nil && err != invalidBucketErr { // 不重试 if resp != nil && resp.StatusCode < 500 { + if c.Conf.RetryOpt.AutoSwitchHost { + if resp.StatusCode == 301 || resp.StatusCode == 302 || resp.StatusCode == 307 { + if resp.Header.Get("X-Cos-Request-Id") == "" { + res = toSwitchHost(u) + if res != u { + return res, true + } + } + } + } return res, false } if c.Conf.RetryOpt.AutoSwitchHost && secondLast { diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/helper.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/helper.go index 87b8ddaff6..e4f08b6443 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/helper.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/helper.go @@ -474,3 +474,7 @@ func GetBucketRegionFromUrl(u *url.URL) (string, string) { } return vec[0], vec[2] } + +func Bool(v bool) *bool { + return &v +} diff --git a/vendor/github.com/tencentyun/cos-go-sdk-v5/object.go b/vendor/github.com/tencentyun/cos-go-sdk-v5/object.go index c225f60d8f..7d0dc8fe8d 100644 --- a/vendor/github.com/tencentyun/cos-go-sdk-v5/object.go +++ b/vendor/github.com/tencentyun/cos-go-sdk-v5/object.go @@ -32,6 +32,7 @@ type ObjectGetOptions struct { ResponseCacheControl string `url:"response-cache-control,omitempty" header:"-"` ResponseContentDisposition string `url:"response-content-disposition,omitempty" header:"-"` ResponseContentEncoding string `url:"response-content-encoding,omitempty" header:"-"` + CiProcess string `url:"ci-process,omitempty" header:"-"` Range string `url:"-" header:"Range,omitempty"` IfModifiedSince string `url:"-" header:"If-Modified-Since,omitempty"` // SSE-C @@ -504,6 +505,7 @@ func (s *ObjectService) Put(ctx context.Context, name string, r io.Reader, uopt method: http.MethodPut, body: reader, optHeader: opt, + isRetry: nr > 0, } // 把上一次错误记录下来 @@ -685,6 +687,7 @@ type ObjectDeleteOptions struct { XCosSSECustomerKeyMD5 string `header:"x-cos-server-side-encryption-customer-key-MD5,omitempty" url:"-" xml:"-"` //兼容其他自定义头部 XOptionHeader *http.Header `header:"-,omitempty" url:"-" xml:"-"` + XOptionQuery *url.Values `header:"-" url:"-" xml:"-"` VersionId string `header:"-" url:"VersionId,omitempty" xml:"-"` } @@ -704,10 +707,14 @@ func (s *ObjectService) Delete(ctx context.Context, name string, opt ...*ObjectD if len(opt) > 0 { optHeader = opt[0] } + uri := "/" + encodeURIComponent(name) + if optHeader != nil && optHeader.XOptionQuery != nil { + uri = uri + "?" + optHeader.XOptionQuery.Encode() + } sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, - uri: "/" + encodeURIComponent(name), + uri: uri, method: http.MethodDelete, optHeader: optHeader, optQuery: optHeader, diff --git a/vendor/modules.txt b/vendor/modules.txt index e786a22c5d..d04216c427 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1361,7 +1361,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata/v20210820 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss/v20180426 -# github.com/tencentyun/cos-go-sdk-v5 v0.7.64 +# github.com/tencentyun/cos-go-sdk-v5 v0.7.66 ## explicit; go 1.12 github.com/tencentyun/cos-go-sdk-v5 # github.com/tetafro/godot v1.4.11