189 changed files with 32 additions and 27658 deletions
-
4README.md
-
2costesting/ci_test.go
-
5crypto/aes_ctr_cipher_test.go
-
3crypto/crypto_object.go
-
3crypto/crypto_object_part.go
-
9crypto/crypto_object_part_test.go
-
9crypto/crypto_object_test.go
-
2crypto/master_kms_cipher.go
-
7crypto/master_kms_cipher_test.go
-
89example/CI/ci_QRcode.go
-
54example/CI/ci_get.go
-
63example/CI/ci_image_process.go
-
73example/CI/ci_put.go
-
99example/CI/ci_watermark.go
-
58example/CI/compression/ci_compression.go
-
68example/CI/compression/guetzli.go
-
65example/CI/content_auditing/ci_audio_auditing_job.go
-
53example/CI/content_auditing/ci_image_recognition.go
-
71example/CI/content_auditing/ci_video_auditing_job.go
-
132example/CI/doc_process/ci_doc_process.go
-
58example/CI/media_process/describe_media_buckets.go
-
53example/CI/media_process/get_media_info.go
-
65example/CI/media_process/get_snapshot.go
-
478example/CI/media_process/media_process.go
-
8example/README.md
-
100example/batch/create_job.go
-
105example/batch/create_job_restore.go
-
44example/batch/describe_job.go
-
43example/batch/list_jobs.go
-
48example/batch/update_priority.go
-
49example/batch/update_status.go
-
71example/bucket/accelerate.go
-
35example/bucket/delPolicy.go
-
35example/bucket/delWebsite.go
-
36example/bucket/delete.go
-
36example/bucket/deleteCORS.go
-
35example/bucket/deleteLifecycle.go
-
36example/bucket/deleteReplication.go
-
36example/bucket/deleteTagging.go
-
71example/bucket/domain.go
-
68example/bucket/encryption.go
-
46example/bucket/get.go
-
40example/bucket/getACL.go
-
41example/bucket/getCORS.go
-
47example/bucket/getLifecycle.go
-
38example/bucket/getLocation.go
-
38example/bucket/getLogging.go
-
64example/bucket/getObjectVersion.go
-
39example/bucket/getPolicy.go
-
41example/bucket/getReplication.go
-
40example/bucket/getTagging.go
-
39example/bucket/getVersioning.go
-
35example/bucket/getWebsite.go
-
38example/bucket/head.go
-
64example/bucket/intelligenttiering.go
-
43example/bucket/listMultipartUploads.go
-
92example/bucket/origin.go
-
39example/bucket/put.go
-
65example/bucket/putACL.go
-
53example/bucket/putCORS.go
-
74example/bucket/putLifecycle.go
-
63example/bucket/putPolicy.go
-
51example/bucket/putReplication.go
-
54example/bucket/putTagging.go
-
41example/bucket/putVersioning.go
-
55example/bucket/putWebsite.go
-
67example/bucket/referer.go
-
316example/crypto/crypto_sample.go
-
61example/object/MultiUpload.go
-
58example/object/abortMultipartUpload.go
-
74example/object/append.go
-
75example/object/batchGet.go
-
73example/object/batchUpload.go
-
108example/object/completeMultipartUpload.go
-
77example/object/copy.go
-
81example/object/copyPart.go
-
54example/object/delete.go
-
119example/object/deleteMultiple.go
-
94example/object/directory.go
-
57example/object/download.go
-
64example/object/fetch_task.go
-
92example/object/get.go
-
57example/object/getACL.go
-
61example/object/getAnonymous.go
-
77example/object/getByPresignedURL.go
-
52example/object/get_with_cvm_role.go
-
59example/object/get_with_retry.go
-
53example/object/head.go
-
55example/object/initiateMultipartUpload.go
-
99example/object/listParts.go
-
98example/object/list_uploads.go
-
68example/object/moveObject.go
-
66example/object/multicopy.go
-
57example/object/options.go
-
68example/object/presigned_url_with_token.go
-
80example/object/put.go
-
80example/object/putACL.go
-
59example/object/put_with_timeout.go
-
65example/object/put_with_transport.go
-
59example/object/restore.go
@ -1,89 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
nil, |
|
||||
&cos.ObjectPutHeaderOptions{ |
|
||||
XOptionHeader: &http.Header{}, |
|
||||
}, |
|
||||
} |
|
||||
pic := &cos.PicOperations{ |
|
||||
IsPicInfo: 1, |
|
||||
Rules: []cos.PicOperationsRules{ |
|
||||
{ |
|
||||
FileId: "format.jpg", |
|
||||
Rule: "QRcode/cover/1", |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
opt.XOptionHeader.Add("Pic-Operations", cos.EncodePicOperations(pic)) |
|
||||
name := "test.jpg" |
|
||||
local_filename := "./QRcode.jpg" |
|
||||
res, _, err := c.CI.PutFromFile(context.Background(), name, local_filename, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
fmt.Printf("%+v\n", res.OriginalInfo) |
|
||||
fmt.Printf("%+v\n", res.ProcessResults) |
|
||||
|
|
||||
res2, _, err := c.CI.GetQRcode(context.Background(), name, 0, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res2) |
|
||||
|
|
||||
gopt := &cos.GenerateQRcodeOptions{ |
|
||||
QRcodeContent: fmt.Sprintf("<%v>", res2.QRcodeInfo.CodeUrl), |
|
||||
Mode: 0, |
|
||||
Width: 200, |
|
||||
} |
|
||||
res3, _, err := c.CI.GenerateQRcode(context.Background(), gopt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res3) |
|
||||
|
|
||||
_, _, err = c.CI.GenerateQRcodeToFile(context.Background(), "./downQRcode.jpg", gopt) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,54 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test.jpg" |
|
||||
filepath := "test.jpg" |
|
||||
_, err := c.CI.GetToFile(context.Background(), name, filepath, "imageMogr2/thumbnail/!50px", nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,63 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ImageProcessOptions{ |
|
||||
IsPicInfo: 1, |
|
||||
Rules: []cos.PicOperationsRules{ |
|
||||
{ |
|
||||
FileId: "format.jpg", |
|
||||
Rule: "imageView2/format/png", |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
name := "test.jpg" |
|
||||
res, _, err := c.CI.ImageProcess(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
} |
|
@ -1,73 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
nil, |
|
||||
&cos.ObjectPutHeaderOptions{ |
|
||||
XOptionHeader: &http.Header{}, |
|
||||
}, |
|
||||
} |
|
||||
pic := &cos.PicOperations{ |
|
||||
IsPicInfo: 1, |
|
||||
Rules: []cos.PicOperationsRules{ |
|
||||
{ |
|
||||
FileId: "format.jpg", |
|
||||
Rule: "imageView2/format/png", |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
opt.XOptionHeader.Add("Pic-Operations", cos.EncodePicOperations(pic)) |
|
||||
name := "test.jpg" |
|
||||
local_filename := "./test.jpg" |
|
||||
res, _, err := c.CI.PutFromFile(context.Background(), name, local_filename, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
fmt.Printf("%+v\n", res.OriginalInfo) |
|
||||
fmt.Printf("%+v\n", res.ProcessResults) |
|
||||
} |
|
@ -1,99 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"encoding/base64" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// 上传时添加盲水印
|
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
nil, |
|
||||
&cos.ObjectPutHeaderOptions{ |
|
||||
XOptionHeader: &http.Header{}, |
|
||||
}, |
|
||||
} |
|
||||
pic := &cos.PicOperations{ |
|
||||
IsPicInfo: 1, |
|
||||
Rules: []cos.PicOperationsRules{ |
|
||||
{ |
|
||||
FileId: "format.jpg", |
|
||||
Rule: "watermark/3/type/3/text/" + base64.StdEncoding.EncodeToString([]byte("testwatermark")), |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
opt.XOptionHeader.Add("Pic-Operations", cos.EncodePicOperations(pic)) |
|
||||
name := "test.jpg" |
|
||||
local_filename := "./test.jpg" |
|
||||
res, _, err := c.CI.PutFromFile(context.Background(), name, local_filename, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
// 下载时添加盲水印
|
|
||||
name = "test.jpg" |
|
||||
filepath := "watermark.jpg" |
|
||||
_, err = c.CI.GetToFile(context.Background(), name, filepath, "watermark/3/type/3/text/"+base64.StdEncoding.EncodeToString([]byte("testwatermark")), nil) |
|
||||
|
|
||||
// 提取盲水印
|
|
||||
opt = &cos.ObjectPutOptions{ |
|
||||
nil, |
|
||||
&cos.ObjectPutHeaderOptions{ |
|
||||
XOptionHeader: &http.Header{}, |
|
||||
}, |
|
||||
} |
|
||||
pic = &cos.PicOperations{ |
|
||||
IsPicInfo: 1, |
|
||||
Rules: []cos.PicOperationsRules{ |
|
||||
{ |
|
||||
FileId: "format2.jpg", |
|
||||
Rule: "watermark/4/type/3/text/" + base64.StdEncoding.EncodeToString([]byte("testwatermark")), |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
opt.XOptionHeader.Add("Pic-Operations", cos.EncodePicOperations(pic)) |
|
||||
name = "test2.jpg" |
|
||||
_, err = c.Object.PutFromFile(context.Background(), name, filepath, opt) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,58 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test.png" |
|
||||
filepath := "test1.jpg" |
|
||||
_, err := c.CI.GetToFile(context.Background(), name, filepath, "imageMogr2/format/tpg", nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
filepath = "test2.jpg" |
|
||||
_, err = c.CI.GetToFile(context.Background(), name, filepath, "imageMogr2/format/heif", nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,68 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"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("http://test-1259654469.pic.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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.CI.PutGuetzli(context.Background()) |
|
||||
log_status(err) |
|
||||
res, _, err := c.CI.GetGuetzli(context.Background()) |
|
||||
log_status(err) |
|
||||
if res != nil && res.GuetzliStatus != "on" { |
|
||||
fmt.Printf("Error Status: %v\n", res.GuetzliStatus) |
|
||||
} |
|
||||
time.Sleep(time.Second * 3) |
|
||||
_, err = c.CI.DeleteGuetzli(context.Background()) |
|
||||
log_status(err) |
|
||||
res, _, err = c.CI.GetGuetzli(context.Background()) |
|
||||
log_status(err) |
|
||||
if res != nil && res.GuetzliStatus != "off" { |
|
||||
fmt.Printf("Error Status: %v\n", res.GuetzliStatus) |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,65 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"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() { |
|
||||
bu, _ := 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: bu, 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, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
opt := &cos.PutAudioAuditingJobOptions{ |
|
||||
InputObject: "test.mp3", |
|
||||
Conf: &cos.AudioAuditingJobConf{ |
|
||||
DetectType: "Porn,Terrorism,Politics,Ads", |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.CI.PutAudioAuditingJob(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
time.Sleep(3 * time.Second) |
|
||||
res2, _, err := c.CI.GetAudioAuditingJob(context.Background(), res.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res2) |
|
||||
} |
|
@ -1,53 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
DetectType := "porn,terrorist,politics" |
|
||||
name := "test.jpg" |
|
||||
res, _, err := c.CI.ImageRecognition(context.Background(), name, DetectType) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
} |
|
@ -1,71 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"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() { |
|
||||
bu, _ := 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: bu, 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, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
opt := &cos.PutVideoAuditingJobOptions{ |
|
||||
InputObject: "demo.mp4", |
|
||||
Conf: &cos.VideoAuditingJobConf{ |
|
||||
DetectType: "Porn,Terrorism,Politics,Ads", |
|
||||
Snapshot: &cos.PutVideoAuditingJobSnapshot{ |
|
||||
Mode: "Interval", |
|
||||
Start: 0.5, |
|
||||
TimeInterval: 50.5, |
|
||||
Count: 100, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.CI.PutVideoAuditingJob(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
time.Sleep(3 * time.Second) |
|
||||
res2, _, err := c.CI.GetVideoAuditingJob(context.Background(), res.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res2) |
|
||||
} |
|
@ -1,132 +0,0 @@ |
|||||
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() |
|
||||
|
|
||||
} |
|
@ -1,58 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
// DescirbeMediaBuckets 需要设置 CIURL 为 ci.<Region>.myqcloud.com
|
|
||||
cu, _ := url.Parse("https://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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.DescribeMediaProcessBucketsOptions{ |
|
||||
Regions: "ap-guangzhou", |
|
||||
} |
|
||||
res, _, err := c.CI.DescribeMediaProcessBuckets(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("res: %+v\n", res) |
|
||||
} |
|
@ -1,53 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
res, _, err := c.CI.GetMediaInfo(context.Background(), "test.mp4", nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("res: %+v\n", res) |
|
||||
} |
|
@ -1,65 +0,0 @@ |
|||||
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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.GetSnapshotOptions{ |
|
||||
Time: 1, |
|
||||
} |
|
||||
resp, err := c.CI.GetSnapshot(context.Background(), "test.mp4", opt) |
|
||||
log_status(err) |
|
||||
defer resp.Body.Close() |
|
||||
|
|
||||
fd, err := os.OpenFile("test.jpg", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
_, err = io.Copy(fd, resp.Body) |
|
||||
fd.Close() |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,478 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"encoding/xml" |
|
||||
"fmt" |
|
||||
"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 InvokeSnapshotTask() { |
|
||||
u, _ := url.Parse("https://wwj-bj-1253960454.cos.ap-beijing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-bj-1253960454.ci.ap-beijing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
createJobOpt := &cos.CreateMediaJobsOptions{ |
|
||||
Tag: "Snapshot", |
|
||||
Input: &cos.JobInput{ |
|
||||
Object: "input/117374C.mp4", |
|
||||
}, |
|
||||
Operation: &cos.MediaProcessJobOperation{ |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-beijing", |
|
||||
Object: "output/abc-${Number}.jpg", |
|
||||
Bucket: "wwj-bj-1253960454", |
|
||||
}, |
|
||||
Snapshot: &cos.Snapshot{ |
|
||||
Mode: "Interval", |
|
||||
Start: "0", |
|
||||
Count: "1", |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: DescribeQueueRes.QueueList[0].QueueId, |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", createJobRes.JobsDetail) |
|
||||
|
|
||||
// DescribeMediaJobs
|
|
||||
DescribeJobRes, _, err := c.CI.DescribeMediaJob(context.Background(), createJobRes.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) |
|
||||
} |
|
||||
|
|
||||
func InvokeConcatTask() { |
|
||||
u, _ := url.Parse("https://wwj-bj-1253960454.cos.ap-beijing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-bj-1253960454.ci.ap-beijing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
concatFragment := make([]cos.ConcatFragment, 0) |
|
||||
concatFragment = append(concatFragment, cos.ConcatFragment{ |
|
||||
Url: "https://wwj-bj-1253960454.cos.ap-beijing.myqcloud.com/input/117374C.mp4", |
|
||||
StartTime: "0", |
|
||||
EndTime: "10", |
|
||||
}) |
|
||||
concatFragment = append(concatFragment, cos.ConcatFragment{ |
|
||||
Url: "https://wwj-bj-1253960454.cos.ap-beijing.myqcloud.com/input/117374C.mp4", |
|
||||
StartTime: "20", |
|
||||
EndTime: "30", |
|
||||
}) |
|
||||
createJobOpt := &cos.CreateMediaJobsOptions{ |
|
||||
Tag: "Concat", |
|
||||
Operation: &cos.MediaProcessJobOperation{ |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-beijing", |
|
||||
Object: "output/go_117374C.mp4", |
|
||||
Bucket: "wwj-bj-1253960454", |
|
||||
}, |
|
||||
ConcatTemplate: &cos.ConcatTemplate{ |
|
||||
Container: &cos.Container{ |
|
||||
Format: "mp4", |
|
||||
}, |
|
||||
Video: &cos.Video{ |
|
||||
Codec: "H.265", |
|
||||
}, |
|
||||
Audio: &cos.Audio{ |
|
||||
//Codec: "AAC",
|
|
||||
}, |
|
||||
ConcatFragment: concatFragment, |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: DescribeQueueRes.QueueList[0].QueueId, |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", createJobRes.JobsDetail) |
|
||||
|
|
||||
// DescribeMediaJobs
|
|
||||
DescribeJobRes, _, err := c.CI.DescribeMediaJob(context.Background(), createJobRes.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) |
|
||||
} |
|
||||
|
|
||||
func InvokeTranscodeTask() { |
|
||||
u, _ := url.Parse("https://wwj-cq-1253960454.cos.ap-chongqing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-cq-1253960454.ci.ap-chongqing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
createJobOpt := &cos.CreateMediaJobsOptions{ |
|
||||
Tag: "Transcode", |
|
||||
Input: &cos.JobInput{ |
|
||||
Object: "input/117374C.mp4", |
|
||||
}, |
|
||||
Operation: &cos.MediaProcessJobOperation{ |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/go_117374C.mp4", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
}, |
|
||||
Transcode: &cos.Transcode{ |
|
||||
Container: &cos.Container{ |
|
||||
Format: "mp4", |
|
||||
}, |
|
||||
Video: &cos.Video{ |
|
||||
Codec: "H.264", |
|
||||
}, |
|
||||
Audio: &cos.Audio{ |
|
||||
Codec: "AAC", |
|
||||
}, |
|
||||
TimeInterval: &cos.TimeInterval{ |
|
||||
Start: "10", |
|
||||
Duration: "", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: "paaf4fce5521a40888a3034a5de80f6ca", |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", createJobRes.JobsDetail) |
|
||||
|
|
||||
// DescribeMediaJobs
|
|
||||
DescribeJobRes, _, err := c.CI.DescribeMediaJob(context.Background(), createJobRes.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) |
|
||||
} |
|
||||
|
|
||||
func InvokeMultiTasks() { |
|
||||
u, _ := url.Parse("https://wwj-cq-1253960454.cos.ap-chongqing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-cq-1253960454.ci.ap-chongqing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
createJobOpt := &cos.CreateMultiMediaJobsOptions{ |
|
||||
Input: &cos.JobInput{ |
|
||||
Object: "input/117374C.mp4", |
|
||||
}, |
|
||||
Operation: []cos.MediaProcessJobOperation{ |
|
||||
cos.MediaProcessJobOperation{ |
|
||||
Tag: "Snapshot", |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/go_${Number}.mp4", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
}, |
|
||||
Snapshot: &cos.Snapshot{ |
|
||||
Mode: "Interval", |
|
||||
Start: "0", |
|
||||
Count: "1", |
|
||||
}, |
|
||||
}, |
|
||||
cos.MediaProcessJobOperation{ |
|
||||
Tag: "Transcode", |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/go_117374C.mp4", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
}, |
|
||||
Transcode: &cos.Transcode{ |
|
||||
Container: &cos.Container{ |
|
||||
Format: "mp4", |
|
||||
}, |
|
||||
Video: &cos.Video{ |
|
||||
Codec: "H.264", |
|
||||
}, |
|
||||
Audio: &cos.Audio{ |
|
||||
Codec: "AAC", |
|
||||
}, |
|
||||
TimeInterval: &cos.TimeInterval{ |
|
||||
Start: "10", |
|
||||
Duration: "", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
cos.MediaProcessJobOperation{ |
|
||||
Tag: "Animation", |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/go_117374C.gif", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
}, |
|
||||
Animation: &cos.Animation{ |
|
||||
Container: &cos.Container{ |
|
||||
Format: "gif", |
|
||||
}, |
|
||||
Video: &cos.AnimationVideo{ |
|
||||
Codec: "gif", |
|
||||
AnimateOnlyKeepKeyFrame: "true", |
|
||||
}, |
|
||||
TimeInterval: &cos.TimeInterval{ |
|
||||
Start: "0", |
|
||||
Duration: "", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: "paaf4fce5521a40888a3034a5de80f6ca", |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMultiMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
for k, job := range createJobRes.JobsDetail { |
|
||||
fmt.Printf("job:%d, %+v\n", k, job) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func TaskNotifyCallback() { |
|
||||
taskBody := "<Response><EventName>TaskFinish</EventName><JobsDetail><Code>Success</Code><CreationTime>2021-09-14T14:38:59+0800</CreationTime><EndTime>2021-09-14T14:39:59+0800</EndTime><Input><BucketId></BucketId><Object>e28ef88b61ed41b7a6ea76a8147f4f9e</Object><Region>ap-guangzhou</Region></Input><JobId>j7123e78c152611ec9e8c1ba6632b91a8</JobId><Message/><Operation><MediaInfo><Format><Bitrate>3775.738000</Bitrate><Duration>143.732000</Duration><FormatLongName>QuickTime / MOV</FormatLongName><FormatName>mov,mp4,m4a,3gp,3g2,mj2</FormatName><NumProgram>0</NumProgram><NumStream>2</NumStream><Size>67836813</Size><StartTime>0.000000</StartTime></Format><Stream><Audio><Bitrate>125.049000</Bitrate><Channel>2</Channel><ChannelLayout>stereo</ChannelLayout><CodecLongName>AAC (Advanced Audio Coding)</CodecLongName><CodecName>aac</CodecName><CodecTag>0x6134706d</CodecTag><CodecTagString>mp4a</CodecTagString><CodecTimeBase>1/44100</CodecTimeBase><Duration>143.730998</Duration><Index>1</Index><Language>und</Language><SampleFmt>fltp</SampleFmt><SampleRate>44100</SampleRate><StartTime>0.000000</StartTime><Timebase>1/44100</Timebase></Audio><Subtitle/><Video><AvgFps>25/1</AvgFps><Bitrate>3645.417000</Bitrate><CodecLongName>H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10</CodecLongName><CodecName>h264</CodecName><CodecTag>0x31637661</CodecTag><CodecTagString>avc1</CodecTagString><CodecTimeBase>1/12800</CodecTimeBase><Dar>9:16</Dar><Duration>143.680000</Duration><Fps>25.500000</Fps><HasBFrame>2</HasBFrame><Height>3412</Height><Index>0</Index><Language>und</Language><Level>51</Level><NumFrames>3592</NumFrames><PixFormat>yuv420p</PixFormat><Profile>High</Profile><RefFrames>1</RefFrames><Rotation>0.000000</Rotation><Sar>2559:2560</Sar><StartTime>0.000000</StartTime><Timebase>1/12800</Timebase><Width>1920</Width></Video></Stream></MediaInfo><MediaResult><OutputFile><Bucket></Bucket><ObjectName>f89f22f7a8be4f478434da58eb11d7da.mp4</ObjectName><ObjectPrefix/><Region>ap-guangzhou</Region></OutputFile></MediaResult><Output><Bucket></Bucket><Object>f89f22f7a8be4f478434da58eb11d7da.mp4</Object><Region>ap-guangzhou</Region></Output><TemplateId>t064fb9214850f49aaac44b5561a7b0b3b</TemplateId><TemplateName>MP4-FHD</TemplateName></Operation><QueueId>p6f358a37bf9442ad8f859db055cd0edb</QueueId><StartTime>2021-09-14T14:38:59+0800</StartTime><State>Success</State><Tag>Transcode</Tag></JobsDetail></Response>" |
|
||||
var body cos.MediaProcessJobsNotifyBody |
|
||||
err := xml.Unmarshal([]byte(taskBody), &body) |
|
||||
if err != nil { |
|
||||
fmt.Println(fmt.Sprintf("err:%v", err)) |
|
||||
} else { |
|
||||
fmt.Println(fmt.Sprintf("body:%v", body)) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func WorkflowExecutionNotifyCallback() { |
|
||||
workflowExecutionBody := "<Response><EventName>WorkflowFinish</EventName><WorkflowExecution><RunId>i70ae991a152911ecb184525400a8700f</RunId><BucketId></BucketId><Object>62ddbc1245.mp4</Object><CosHeaders><Key>x-cos-meta-id</Key><Value>62ddbc1245</Value></CosHeaders><CosHeaders><Key>Content-Type</Key><Value>video/mp4</Value></CosHeaders><WorkflowId>w29ba54d02b7340dd9fb44eb5beb786b9</WorkflowId><WorkflowName></WorkflowName><CreateTime>2021-09-14 15:00:26+0800</CreateTime><State>Success</State><Tasks><Type>Transcode</Type><CreateTime>2021-09-14 15:00:27+0800</CreateTime><EndTime>2021-09-14 15:00:42+0800</EndTime><State>Success</State><JobId>j70bab192152911ecab79bba409874f7f</JobId><Name>Transcode_1607323983818</Name><TemplateId>t088613dea8d564a9ba7e6b02cbd5de877</TemplateId><TemplateName>HLS-FHD</TemplateName></Tasks></WorkflowExecution></Response>" |
|
||||
var body cos.WorkflowExecutionNotifyBody |
|
||||
err := xml.Unmarshal([]byte(workflowExecutionBody), &body) |
|
||||
if err != nil { |
|
||||
fmt.Println(fmt.Sprintf("err:%v", err)) |
|
||||
} else { |
|
||||
fmt.Println(fmt.Sprintf("body:%v", body)) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func InvokeSpriteSnapshotTask() { |
|
||||
u, _ := url.Parse("https://wwj-cq-1253960454.cos.ap-chongqing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-cq-1253960454.ci.ap-chongqing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
createJobOpt := &cos.CreateMediaJobsOptions{ |
|
||||
Tag: "Snapshot", |
|
||||
Input: &cos.JobInput{ |
|
||||
Object: "input/117374C.mp4", |
|
||||
}, |
|
||||
Operation: &cos.MediaProcessJobOperation{ |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/abc-${Number}.jpg", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
SpriteObject: "output/sprite-${Number}.jpg", |
|
||||
}, |
|
||||
Snapshot: &cos.Snapshot{ |
|
||||
Mode: "Interval", |
|
||||
Start: "0", |
|
||||
Count: "100", |
|
||||
SnapshotOutMode: "SnapshotAndSprite", // OnlySnapshot OnlySprite
|
|
||||
SpriteSnapshotConfig: &cos.SpriteSnapshotConfig{ |
|
||||
CellHeight: "128", |
|
||||
CellWidth: "128", |
|
||||
Color: "Black", |
|
||||
Columns: "3", |
|
||||
Lines: "10", |
|
||||
Margin: "2", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: DescribeQueueRes.QueueList[0].QueueId, |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", createJobRes.JobsDetail) |
|
||||
|
|
||||
// DescribeMediaJobs
|
|
||||
DescribeJobRes, _, err := c.CI.DescribeMediaJob(context.Background(), createJobRes.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) |
|
||||
} |
|
||||
|
|
||||
func InvokeSegmentTask() { |
|
||||
u, _ := url.Parse("https://wwj-cq-1253960454.cos.ap-chongqing.myqcloud.com") |
|
||||
cu, _ := url.Parse("https://wwj-cq-1253960454.ci.ap-chongqing.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, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// DescribeMediaProcessQueues
|
|
||||
DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ |
|
||||
QueueIds: "", |
|
||||
PageNumber: 1, |
|
||||
PageSize: 2, |
|
||||
} |
|
||||
DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeQueueRes) |
|
||||
// CreateMediaJobs
|
|
||||
createJobOpt := &cos.CreateMediaJobsOptions{ |
|
||||
Tag: "Segment", |
|
||||
Input: &cos.JobInput{ |
|
||||
Object: "input/117374C.mp4", |
|
||||
}, |
|
||||
Operation: &cos.MediaProcessJobOperation{ |
|
||||
Output: &cos.JobOutput{ |
|
||||
Region: "ap-chongqing", |
|
||||
Object: "output/abc-${Number}.mp4", |
|
||||
Bucket: "wwj-cq-1253960454", |
|
||||
}, |
|
||||
Segment: &cos.Segment{ |
|
||||
Format: "mp4", |
|
||||
Duration: "10", |
|
||||
}, |
|
||||
}, |
|
||||
QueueId: DescribeQueueRes.QueueList[0].QueueId, |
|
||||
} |
|
||||
createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", createJobRes.JobsDetail) |
|
||||
|
|
||||
// DescribeMediaJobs
|
|
||||
DescribeJobRes, _, err := c.CI.DescribeMediaJob(context.Background(), createJobRes.JobsDetail.JobId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
// InvokeSnapshotTask()
|
|
||||
// InvokeConcatTask()
|
|
||||
// InvokeTranscodeTask()
|
|
||||
// InvokeMultiTasks()
|
|
||||
// TaskNotifyCallback()
|
|
||||
// WorkflowExecutionNotifyCallback()
|
|
||||
// InvokeSpriteSnapshotTask()
|
|
||||
InvokeSegmentTask() |
|
||||
} |
|
@ -1,8 +0,0 @@ |
|||||
|
|
||||
|
|
||||
``` |
|
||||
export COS_SECRETID=xx |
|
||||
export COS_SECRETKEY=xxx |
|
||||
|
|
||||
go run xxx.go |
|
||||
``` |
|
@ -1,100 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strconv" |
|
||||
"strings" |
|
||||
|
|
||||
"github.com/google/uuid" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
test_batch_bucket := "testcd-1259654469" |
|
||||
target_batch_bucket := "cosgosdkreptest-1259654469" |
|
||||
appid := 1259654469 |
|
||||
uin := "100010805041" |
|
||||
region := "ap-chengdu" |
|
||||
|
|
||||
// bucket url:<Bucketname-Appid>.cos.<region>.mycloud.com
|
|
||||
bucketurl, _ := url.Parse("https://" + test_batch_bucket + ".cos." + region + ".myqcloud.com") |
|
||||
// batch url:<uin>.cos-control.<region>.myqcloud.ccom
|
|
||||
batchurl, _ := url.Parse("https://" + uin + ".cos-control." + region + ".myqcloud.com") |
|
||||
|
|
||||
b := &cos.BaseURL{BucketURL: bucketurl, BatchURL: batchurl} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// 创建需要复制的文件
|
|
||||
source_name := "test/1.txt" |
|
||||
sf := strings.NewReader("batch test content") |
|
||||
_, err := c.Object.Put(context.Background(), source_name, sf, nil) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
|
|
||||
// 创建清单文件
|
|
||||
manifest_name := "test/manifest.csv" |
|
||||
f := strings.NewReader(test_batch_bucket + "," + source_name) |
|
||||
resp, err := c.Object.Put(context.Background(), manifest_name, f, nil) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
etag := resp.Header.Get("ETag") |
|
||||
|
|
||||
uuid_str := uuid.New().String() |
|
||||
opt := &cos.BatchCreateJobOptions{ |
|
||||
ClientRequestToken: uuid_str, |
|
||||
ConfirmationRequired: "true", |
|
||||
Description: "test batch", |
|
||||
Manifest: &cos.BatchJobManifest{ |
|
||||
Location: &cos.BatchJobManifestLocation{ |
|
||||
ETag: etag, |
|
||||
ObjectArn: "qcs::cos:" + region + "::" + test_batch_bucket + "/" + manifest_name, |
|
||||
}, |
|
||||
Spec: &cos.BatchJobManifestSpec{ |
|
||||
Fields: []string{"Bucket", "Key"}, |
|
||||
Format: "COSBatchOperations_CSV_V1", |
|
||||
}, |
|
||||
}, |
|
||||
Operation: &cos.BatchJobOperation{ |
|
||||
PutObjectCopy: &cos.BatchJobOperationCopy{ |
|
||||
TargetResource: "qcs::cos:" + region + ":uid/" + strconv.Itoa(appid) + ":" + target_batch_bucket, |
|
||||
}, |
|
||||
}, |
|
||||
Priority: 1, |
|
||||
Report: &cos.BatchJobReport{ |
|
||||
Bucket: "qcs::cos:" + region + "::" + test_batch_bucket, |
|
||||
Enabled: "true", |
|
||||
Format: "Report_CSV_V1", |
|
||||
Prefix: "job-result", |
|
||||
ReportScope: "AllTasks", |
|
||||
}, |
|
||||
RoleArn: "qcs::cam::uin/" + uin + ":roleName/COSBatch_QcsRole", |
|
||||
} |
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.CreateJob(context.Background(), opt, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
fmt.Println(res) |
|
||||
|
|
||||
} |
|
@ -1,105 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"github.com/google/uuid" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
test_batch_bucket := "testcd-1259654469" |
|
||||
appid := 1259654469 |
|
||||
uin := "100010805041" |
|
||||
region := "ap-chengdu" |
|
||||
|
|
||||
// bucket url:<Bucketname-Appid>.cos.<region>.mycloud.com
|
|
||||
bucketurl, _ := url.Parse("https://" + test_batch_bucket + ".cos." + region + ".myqcloud.com") |
|
||||
// batch url:<uin>.cos-control.<region>.myqcloud.ccom
|
|
||||
batchurl, _ := url.Parse("https://" + uin + ".cos-control." + region + ".myqcloud.com") |
|
||||
|
|
||||
b := &cos.BaseURL{BucketURL: bucketurl, BatchURL: batchurl} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// 创建需要归档恢复的文件
|
|
||||
source_name := "test/restore.txt" |
|
||||
sf := strings.NewReader("batch test content") |
|
||||
objopt := &cos.ObjectPutOptions{ |
|
||||
nil, |
|
||||
&cos.ObjectPutHeaderOptions{ |
|
||||
XCosStorageClass: "Archive", |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Object.Put(context.Background(), source_name, sf, objopt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
|
|
||||
// 创建清单文件
|
|
||||
manifest_name := "test/manifest.csv" |
|
||||
f := strings.NewReader(test_batch_bucket + "," + source_name) |
|
||||
resp, err := c.Object.Put(context.Background(), manifest_name, f, nil) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
etag := resp.Header.Get("ETag") |
|
||||
|
|
||||
uuid_str := uuid.New().String() |
|
||||
opt := &cos.BatchCreateJobOptions{ |
|
||||
ClientRequestToken: uuid_str, |
|
||||
ConfirmationRequired: "true", |
|
||||
Description: "test batch", |
|
||||
Manifest: &cos.BatchJobManifest{ |
|
||||
Location: &cos.BatchJobManifestLocation{ |
|
||||
ETag: etag, |
|
||||
ObjectArn: "qcs::cos:" + region + "::" + test_batch_bucket + "/" + manifest_name, |
|
||||
}, |
|
||||
Spec: &cos.BatchJobManifestSpec{ |
|
||||
Fields: []string{"Bucket", "Key"}, |
|
||||
Format: "COSBatchOperations_CSV_V1", |
|
||||
}, |
|
||||
}, |
|
||||
Operation: &cos.BatchJobOperation{ |
|
||||
RestoreObject: &cos.BatchInitiateRestoreObject{ |
|
||||
ExpirationInDays: 3, |
|
||||
JobTier: "Standard", |
|
||||
}, |
|
||||
}, |
|
||||
Priority: 1, |
|
||||
Report: &cos.BatchJobReport{ |
|
||||
Bucket: "qcs::cos:" + region + "::" + test_batch_bucket, |
|
||||
Enabled: "true", |
|
||||
Format: "Report_CSV_V1", |
|
||||
Prefix: "job-result", |
|
||||
ReportScope: "AllTasks", |
|
||||
}, |
|
||||
RoleArn: "qcs::cam::uin/" + uin + ":roleName/COSBatch_QcsRole", |
|
||||
} |
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.CreateJob(context.Background(), opt, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
fmt.Println(res) |
|
||||
|
|
||||
} |
|
@ -1,44 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"fmt" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
uin := "100010805041" |
|
||||
appid := 1259654469 |
|
||||
jobid := "795ad997-5557-4869-9a19-b66ec087d460" |
|
||||
u, _ := url.Parse("https://" + uin + ".cos-control.ap-chengdu.myqcloud.com") |
|
||||
b := &cos.BaseURL{BatchURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.DescribeJob(context.Background(), jobid, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
if res != nil && res.Job != nil { |
|
||||
fmt.Printf("%+v", res.Job) |
|
||||
} |
|
||||
} |
|
@ -1,43 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"fmt" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
uin := "100010805041" |
|
||||
appid := 1259654469 |
|
||||
u, _ := url.Parse("https://" + uin + ".cos-control.ap-chengdu.myqcloud.com") |
|
||||
b := &cos.BaseURL{BatchURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.ListJobs(context.Background(), nil, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
if res != nil && res.Jobs != nil { |
|
||||
fmt.Printf("%+v", res.Jobs) |
|
||||
} |
|
||||
} |
|
@ -1,48 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"fmt" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
uin := "100010805041" |
|
||||
appid := 1259654469 |
|
||||
jobid := "795ad997-5557-4869-9a19-b66ec087d460" |
|
||||
u, _ := url.Parse("https://" + uin + ".cos-control.ap-chengdu.myqcloud.com") |
|
||||
b := &cos.BaseURL{BatchURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BatchUpdatePriorityOptions{ |
|
||||
JobId: jobid, |
|
||||
Priority: 3, |
|
||||
} |
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.UpdateJobPriority(context.Background(), opt, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
if res != nil { |
|
||||
fmt.Printf("%+v", res) |
|
||||
} |
|
||||
} |
|
@ -1,49 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"fmt" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
uin := "100010805041" |
|
||||
appid := 1259654469 |
|
||||
jobid := "289b0ea1-5ac5-453d-8a61-7f452dd4a209" |
|
||||
u, _ := url.Parse("https://" + uin + ".cos-control.ap-chengdu.myqcloud.com") |
|
||||
b := &cos.BaseURL{BatchURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BatchUpdateStatusOptions{ |
|
||||
JobId: jobid, |
|
||||
RequestedJobStatus: "Ready", // 允许状态转换见 https://cloud.tencent.com/document/product/436/38604
|
|
||||
StatusUpdateReason: "to test", |
|
||||
} |
|
||||
headers := &cos.BatchRequestHeaders{ |
|
||||
XCosAppid: appid, |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Batch.UpdateJobStatus(context.Background(), opt, headers) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
if res != nil { |
|
||||
fmt.Printf("%+v", res) |
|
||||
} |
|
||||
} |
|
@ -1,71 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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("Resource is not existed") |
|
||||
} else if e, ok := cos.IsCOSError(err); ok { |
|
||||
fmt.Printf("Code: %v\n", e.Code) |
|
||||
fmt.Printf("Message: %v\n", e.Message) |
|
||||
fmt.Printf("Resource: %v\n", e.Resource) |
|
||||
fmt.Printf("RequestId: %v\n", e.RequestID) |
|
||||
// ERROR
|
|
||||
} else { |
|
||||
fmt.Println(err) |
|
||||
// ERROR
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
res, _, err := c.Bucket.GetAccelerate(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
opt := &cos.BucketPutAccelerateOptions{ |
|
||||
Status: "Enabled", |
|
||||
} |
|
||||
_, err = c.Bucket.PutAccelerate(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
res, _, err = c.Bucket.GetAccelerate(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
opt.Status = "Suspended" |
|
||||
_, err = c.Bucket.PutAccelerate(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
res, _, err = c.Bucket.GetAccelerate(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
} |
|
@ -1,35 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeletePolicy(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,35 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeleteWebsite(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://testdelete-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.Delete(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeleteCORS(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,35 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeleteLifecycle(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeleteBucketReplication(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, err := c.Bucket.DeleteTagging(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,71 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutDomainOptions{ |
|
||||
Rules: []cos.BucketDomainRule{ |
|
||||
{ |
|
||||
Status: "ENABLED", |
|
||||
Name: "www.qq.com", |
|
||||
Type: "REST", |
|
||||
ForcedReplacement: "CNAME", |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutDomain(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
res, _, err := c.Bucket.GetDomain(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
_, err = c.Bucket.DeleteDomain(context.Background()) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,68 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"encoding/xml" |
|
||||
"fmt" |
|
||||
"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("Resource is not existed") |
|
||||
} else if e, ok := cos.IsCOSError(err); ok { |
|
||||
fmt.Printf("Code: %v\n", e.Code) |
|
||||
fmt.Printf("Message: %v\n", e.Message) |
|
||||
fmt.Printf("Resource: %v\n", e.Resource) |
|
||||
fmt.Printf("RequestId: %v\n", e.RequestID) |
|
||||
// ERROR
|
|
||||
} else { |
|
||||
fmt.Println(err) |
|
||||
// ERROR
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutEncryptionOptions{ |
|
||||
XMLName: xml.Name{Local: "ServerSideEncryptionConfiguration"}, |
|
||||
Rule: &cos.BucketEncryptionConfiguration{ |
|
||||
SSEAlgorithm: "AES256", |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutEncryption(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
res, _, err := c.Bucket.GetEncryption(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
|
|
||||
_, err = c.Bucket.DeleteEncryption(context.Background()) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,46 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"os" |
|
||||
|
|
||||
"net/url" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketGetOptions{ |
|
||||
Prefix: "test", |
|
||||
MaxKeys: 3, |
|
||||
} |
|
||||
v, _, err := c.Bucket.Get(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
|
|
||||
for _, c := range v.Contents { |
|
||||
fmt.Printf("%s, %d\n", c.Key, c.Size) |
|
||||
} |
|
||||
} |
|
@ -1,40 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetACL(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, a := range v.AccessControlList { |
|
||||
fmt.Printf("%s, %s, %s\n", a.Grantee.Type, a.Grantee.ID, a.Permission) |
|
||||
} |
|
||||
} |
|
@ -1,41 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetCORS(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, r := range v.Rules { |
|
||||
|
|
||||
fmt.Printf("%s, %s\n", r.AllowedOrigins, r.AllowedMethods) |
|
||||
} |
|
||||
} |
|
@ -1,47 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetLifecycle(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, r := range v.Rules { |
|
||||
fmt.Printf("%+v\n", r.ID) |
|
||||
fmt.Printf("%+v\n", r.Filter) |
|
||||
fmt.Printf("%+v\n", r.Status) |
|
||||
fmt.Printf("%+v\n", r.Transition) |
|
||||
fmt.Printf("%+v\n", r.Expiration) |
|
||||
fmt.Printf("%+v\n", r.NoncurrentVersionExpiration) |
|
||||
fmt.Printf("%+v\n", r.NoncurrentVersionTransition) |
|
||||
fmt.Printf("%+v\n", r.AbortIncompleteMultipartUpload) |
|
||||
} |
|
||||
} |
|
@ -1,38 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetLocation(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
fmt.Printf("%s\n", v.Location) |
|
||||
} |
|
@ -1,38 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://bj-1259654469.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetLogging(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
fmt.Printf("%+v\n", v.LoggingEnabled) |
|
||||
} |
|
@ -1,64 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"os" |
|
||||
|
|
||||
"net/url" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketGetObjectVersionsOptions{ |
|
||||
Delimiter: "/", |
|
||||
MaxKeys: 1, |
|
||||
} |
|
||||
v, _, err := c.Bucket.GetObjectVersions(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
for _, c := range v.Version { |
|
||||
fmt.Printf("%v, %v, %v\n", c.Key, c.Size, c.IsLatest) |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,39 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"encoding/json" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
res, _, err := c.Bucket.GetPolicy(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
bs, err := json.Marshal(res) |
|
||||
fmt.Println(string(bs)) |
|
||||
} |
|
@ -1,41 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetBucketReplication(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, r := range v.Rule { |
|
||||
|
|
||||
fmt.Printf("%s, %s\n", r.Status, r.ID) |
|
||||
} |
|
||||
} |
|
@ -1,40 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetTagging(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, t := range v.TagSet { |
|
||||
fmt.Printf("%s: %s\n", t.Key, t.Value) |
|
||||
} |
|
||||
} |
|
@ -1,39 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Bucket.GetVersioning(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
|
|
||||
fmt.Printf("status is %s \n", v.Status) |
|
||||
} |
|
@ -1,35 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
_, _, err := c.Bucket.GetWebsite(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,38 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
resp, err := c.Bucket.Head(context.Background()) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
fmt.Println(resp.Status) |
|
||||
} |
|
@ -1,64 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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("Resource is not existed") |
|
||||
} else if e, ok := cos.IsCOSError(err); ok { |
|
||||
fmt.Printf("Code: %v\n", e.Code) |
|
||||
fmt.Printf("Message: %v\n", e.Message) |
|
||||
fmt.Printf("Resource: %v\n", e.Resource) |
|
||||
fmt.Printf("RequestId: %v\n", e.RequestID) |
|
||||
// ERROR
|
|
||||
} else { |
|
||||
fmt.Println(err) |
|
||||
// ERROR
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
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) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
fmt.Printf("%+v\n", res.Status) |
|
||||
fmt.Printf("%+v\n", res.Transition.Days) |
|
||||
} |
|
@ -1,43 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ListMultipartUploadsOptions{ |
|
||||
Prefix: "t", |
|
||||
} |
|
||||
v, _, err := c.Bucket.ListMultipartUploads(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
for _, p := range v.Uploads { |
|
||||
fmt.Printf("%s\n", p.Key) |
|
||||
} |
|
||||
} |
|
@ -1,92 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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("Resource is not existed") |
|
||||
} else if e, ok := cos.IsCOSError(err); ok { |
|
||||
fmt.Printf("Code: %v\n", e.Code) |
|
||||
fmt.Printf("Message: %v\n", e.Message) |
|
||||
fmt.Printf("Resource: %v\n", e.Resource) |
|
||||
fmt.Printf("RequestId: %v\n", e.RequestID) |
|
||||
// ERROR
|
|
||||
} else { |
|
||||
fmt.Println(err) |
|
||||
// ERROR
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutOriginOptions{ |
|
||||
Rule: []cos.BucketOriginRule{ |
|
||||
{ |
|
||||
OriginType: "Proxy", |
|
||||
OriginCondition: &cos.BucketOriginCondition{ |
|
||||
HTTPStatusCode: "404", |
|
||||
Prefix: "", |
|
||||
}, |
|
||||
OriginParameter: &cos.BucketOriginParameter{ |
|
||||
Protocol: "FOLLOW", |
|
||||
FollowQueryString: true, |
|
||||
HttpHeader: &cos.BucketOriginHttpHeader{ |
|
||||
NewHttpHeaders: []cos.OriginHttpHeader{ |
|
||||
{ |
|
||||
Key: "x-cos-ContentType", |
|
||||
Value: "csv", |
|
||||
}, |
|
||||
}, |
|
||||
FollowHttpHeaders: []cos.OriginHttpHeader{ |
|
||||
{ |
|
||||
Key: "Content-Type", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
FollowRedirection: true, |
|
||||
}, |
|
||||
OriginInfo: &cos.BucketOriginInfo{ |
|
||||
HostInfo: "examplebucket-1250000000.cos.ap-shanghai.myqcloud.com", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutOrigin(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
res, _, err := c.Bucket.GetOrigin(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
fmt.Printf("%+v\n", res.Rule) |
|
||||
_, err = c.Bucket.DeleteOrigin(context.Background()) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,39 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://testdelete-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
//opt := &cos.BucketPutOptions{
|
|
||||
// XCosACL: "public-read",
|
|
||||
//}
|
|
||||
_, err := c.Bucket.Put(context.Background(), nil) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,65 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// with header
|
|
||||
opt := &cos.BucketPutACLOptions{ |
|
||||
Header: &cos.ACLHeaderOptions{ |
|
||||
XCosACL: "private", |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Bucket.PutACL(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
|
|
||||
// with body
|
|
||||
opt = &cos.BucketPutACLOptions{ |
|
||||
Body: &cos.ACLXml{ |
|
||||
Owner: &cos.Owner{ |
|
||||
ID: "qcs::cam::uin/100000760461:uin/100000760461", |
|
||||
}, |
|
||||
AccessControlList: []cos.ACLGrant{ |
|
||||
{ |
|
||||
Grantee: &cos.ACLGrantee{ |
|
||||
Type: "RootAccount", |
|
||||
ID: "qcs::cam::uin/100000760461:uin/100000760461", |
|
||||
}, |
|
||||
|
|
||||
Permission: "FULL_CONTROL", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
_, err = c.Bucket.PutACL(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,53 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutCORSOptions{ |
|
||||
Rules: []cos.BucketCORSRule{ |
|
||||
{ |
|
||||
AllowedOrigins: []string{"http://www.qq.com"}, |
|
||||
AllowedMethods: []string{"PUT", "GET"}, |
|
||||
AllowedHeaders: []string{"x-cos-meta-test", "x-cos-xx"}, |
|
||||
MaxAgeSeconds: 500, |
|
||||
ExposeHeaders: []string{"x-cos-meta-test1"}, |
|
||||
}, |
|
||||
{ |
|
||||
ID: "1234", |
|
||||
AllowedOrigins: []string{"http://www.baidu.com", "twitter.com"}, |
|
||||
AllowedMethods: []string{"PUT", "GET"}, |
|
||||
MaxAgeSeconds: 500, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Bucket.PutCORS(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,74 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
lc := &cos.BucketPutLifecycleOptions{ |
|
||||
Rules: []cos.BucketLifecycleRule{ |
|
||||
{ |
|
||||
ID: "1234", |
|
||||
Filter: &cos.BucketLifecycleFilter{Prefix: "test"}, |
|
||||
Status: "Enabled", |
|
||||
Transition: []cos.BucketLifecycleTransition{ |
|
||||
{ |
|
||||
Days: 30, |
|
||||
StorageClass: "STANDARD_IA", |
|
||||
}, |
|
||||
{ |
|
||||
Days: 90, |
|
||||
StorageClass: "ARCHIVE", |
|
||||
}, |
|
||||
}, |
|
||||
Expiration: &cos.BucketLifecycleExpiration{ |
|
||||
Days: 360, |
|
||||
}, |
|
||||
NoncurrentVersionExpiration: &cos.BucketLifecycleNoncurrentVersion{ |
|
||||
NoncurrentDays: 360, |
|
||||
}, |
|
||||
NoncurrentVersionTransition: []cos.BucketLifecycleNoncurrentVersion{ |
|
||||
{ |
|
||||
NoncurrentDays: 90, |
|
||||
StorageClass: "ARCHIVE", |
|
||||
}, |
|
||||
{ |
|
||||
NoncurrentDays: 180, |
|
||||
StorageClass: "DEEP_ARCHIVE", |
|
||||
}, |
|
||||
}, |
|
||||
AbortIncompleteMultipartUpload: &cos.BucketLifecycleAbortIncompleteMultipartUpload{ |
|
||||
DaysAfterInitiation: 90, |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Bucket.PutLifecycle(context.Background(), lc) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,63 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutPolicyOptions{ |
|
||||
Version: "2.0", |
|
||||
Statement: []cos.BucketStatement{ |
|
||||
{ |
|
||||
Principal: map[string][]string{ |
|
||||
"qcs": []string{ |
|
||||
"qcs::cam::uin/100000000001:uin/100000000011", //替换成您想授予权限的账户uin
|
|
||||
}, |
|
||||
}, |
|
||||
Action: []string{ |
|
||||
"name/cos:GetObject", |
|
||||
}, |
|
||||
Effect: "allow", |
|
||||
Resource: []string{ |
|
||||
//这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
|
|
||||
"qcs::cos:ap-guangzhou:uid/1259654469:test-1259654469/exampleobject", |
|
||||
}, |
|
||||
Condition: map[string]map[string]interface{}{ |
|
||||
"ip_not_equal": map[string]interface{}{ |
|
||||
"qcs:ip": []string{ |
|
||||
"<ip>", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutPolicy(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,51 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.PutBucketReplicationOptions{ |
|
||||
// qcs::cam::uin/[UIN]:uin/[Subaccount]
|
|
||||
Role: "qcs::cam::uin/2779643970:uin/2779643970", |
|
||||
Rule: []cos.BucketReplicationRule{ |
|
||||
{ |
|
||||
ID: "1", |
|
||||
// Enabled or Disabled
|
|
||||
Status: "Enabled", |
|
||||
Destination: &cos.ReplicationDestination{ |
|
||||
// qcs::cos:[Region]::[Bucketname-Appid]
|
|
||||
Bucket: "qcs::cos:ap-guangzhou::alangz-1251668577", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Bucket.PutBucketReplication(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,54 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
startTime := time.Now() |
|
||||
|
|
||||
tg := &cos.BucketPutTaggingOptions{ |
|
||||
TagSet: []cos.BucketTaggingTag{ |
|
||||
{ |
|
||||
Key: "test_k2", |
|
||||
Value: "test_v2", |
|
||||
}, |
|
||||
{ |
|
||||
Key: "test_k3", |
|
||||
Value: "test_v3", |
|
||||
}, |
|
||||
{ |
|
||||
Key: startTime.Format("02_Jan_06_15_04_MST"), |
|
||||
Value: "test_time", |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
_, err := c.Bucket.PutTagging(context.Background(), tg) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,41 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutVersionOptions{ |
|
||||
// Enabled or Suspended, the versioning once opened can not close.
|
|
||||
Status: "Enabled", |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutVersioning(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,55 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
) |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutWebsiteOptions{ |
|
||||
Index: "index.html", |
|
||||
Error: &cos.ErrorDocument{"index_backup.html"}, |
|
||||
RedirectProtocol: &cos.RedirectRequestsProtocol{"https"}, |
|
||||
RoutingRules: &cos.WebsiteRoutingRules{ |
|
||||
[]cos.WebsiteRoutingRule{ |
|
||||
{ |
|
||||
ConditionErrorCode: "404", |
|
||||
RedirectProtocol: "https", |
|
||||
RedirectReplaceKey: "404.html", |
|
||||
}, |
|
||||
{ |
|
||||
ConditionPrefix: "docs/", |
|
||||
RedirectProtocol: "https", |
|
||||
RedirectReplaceKeyPrefix: "documents/", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutWebsite(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
panic(err) |
|
||||
} |
|
||||
} |
|
@ -1,67 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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("Resource is not existed") |
|
||||
} else if e, ok := cos.IsCOSError(err); ok { |
|
||||
fmt.Printf("Code: %v\n", e.Code) |
|
||||
fmt.Printf("Message: %v\n", e.Message) |
|
||||
fmt.Printf("Resource: %v\n", e.Resource) |
|
||||
fmt.Printf("RequestId: %v\n", e.RequestID) |
|
||||
// ERROR
|
|
||||
} else { |
|
||||
fmt.Println(err) |
|
||||
// ERROR
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{ |
|
||||
BucketURL: u, |
|
||||
} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.BucketPutRefererOptions{ |
|
||||
Status: "Enabled", |
|
||||
RefererType: "White-List", |
|
||||
DomainList: []string{ |
|
||||
"*.qq.com", |
|
||||
"*.qcloud.com", |
|
||||
}, |
|
||||
EmptyReferConfiguration: "Allow", |
|
||||
} |
|
||||
|
|
||||
_, err := c.Bucket.PutReferer(context.Background(), opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
res, _, err := c.Bucket.GetReferer(context.Background()) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n", res) |
|
||||
} |
|
@ -1,316 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"bytes" |
|
||||
"context" |
|
||||
"crypto/md5" |
|
||||
"crypto/rand" |
|
||||
"fmt" |
|
||||
"io" |
|
||||
"io/ioutil" |
|
||||
math_rand "math/rand" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/crypto" |
|
||||
"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
|
|
||||
} |
|
||||
os.Exit(1) |
|
||||
} |
|
||||
|
|
||||
func cos_max(x, y int64) int64 { |
|
||||
if x > y { |
|
||||
return x |
|
||||
} |
|
||||
return y |
|
||||
} |
|
||||
|
|
||||
func simple_put_object() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// Case1 上传对象
|
|
||||
name := "test/example2" |
|
||||
|
|
||||
fmt.Println("============== simple_put_object ======================") |
|
||||
// 该标识信息唯一确认一个主加密密钥, 解密时,需要传入相同的标识信息
|
|
||||
// KMS加密时,该信息设置成EncryptionContext,最大支持1024字符,如果Encrypt指定了该参数,则在Decrypt 时需要提供同样的参数
|
|
||||
materialDesc := make(map[string]string) |
|
||||
//materialDesc["desc"] = "material information of your master encrypt key"
|
|
||||
|
|
||||
// 创建KMS客户端
|
|
||||
kmsclient, _ := coscrypto.NewKMSClient(c.GetCredential(), "ap-guangzhou") |
|
||||
// 创建KMS主加密密钥,标识信息和主密钥一一对应
|
|
||||
kmsID := os.Getenv("KMSID") |
|
||||
masterCipher, _ := coscrypto.CreateMasterKMS(kmsclient, kmsID, materialDesc) |
|
||||
// 创建加密客户端
|
|
||||
client := coscrypto.NewCryptoClient(c, masterCipher) |
|
||||
|
|
||||
contentLength := 1024*1024*10 + 1 |
|
||||
originData := make([]byte, contentLength) |
|
||||
_, err := rand.Read(originData) |
|
||||
f := bytes.NewReader(originData) |
|
||||
// 加密上传
|
|
||||
_, err = client.Object.Put(context.Background(), name, f, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
math_rand.Seed(time.Now().UnixNano()) |
|
||||
rangeStart := math_rand.Intn(contentLength) |
|
||||
rangeEnd := rangeStart + math_rand.Intn(contentLength-rangeStart) |
|
||||
opt := &cos.ObjectGetOptions{ |
|
||||
Range: fmt.Sprintf("bytes=%v-%v", rangeStart, rangeEnd), |
|
||||
} |
|
||||
// 解密下载
|
|
||||
resp, err := client.Object.Get(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
defer resp.Body.Close() |
|
||||
decryptedData, _ := ioutil.ReadAll(resp.Body) |
|
||||
if bytes.Compare(decryptedData, originData[rangeStart:rangeEnd+1]) != 0 { |
|
||||
fmt.Println("Error: encryptedData != originData") |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func simple_put_object_from_file() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// Case1 上传对象
|
|
||||
name := "test/example1" |
|
||||
|
|
||||
fmt.Println("============== simple_put_object_from_file ======================") |
|
||||
// 该标识信息唯一确认一个主加密密钥, 解密时,需要传入相同的标识信息
|
|
||||
// KMS加密时,该信息设置成EncryptionContext,最大支持1024字符,如果Encrypt指定了该参数,则在Decrypt 时需要提供同样的参数
|
|
||||
materialDesc := make(map[string]string) |
|
||||
//materialDesc["desc"] = "material information of your master encrypt key"
|
|
||||
|
|
||||
// 创建KMS客户端
|
|
||||
kmsclient, _ := coscrypto.NewKMSClient(c.GetCredential(), "ap-guangzhou") |
|
||||
// 创建KMS主加密密钥,标识信息和主密钥一一对应
|
|
||||
kmsID := os.Getenv("KMSID") |
|
||||
masterCipher, _ := coscrypto.CreateMasterKMS(kmsclient, kmsID, materialDesc) |
|
||||
// 创建加密客户端
|
|
||||
client := coscrypto.NewCryptoClient(c, masterCipher) |
|
||||
|
|
||||
filepath := "test" |
|
||||
fd, err := os.Open(filepath) |
|
||||
log_status(err) |
|
||||
defer fd.Close() |
|
||||
m := md5.New() |
|
||||
io.Copy(m, fd) |
|
||||
originDataMD5 := m.Sum(nil) |
|
||||
|
|
||||
// 加密上传
|
|
||||
_, err = client.Object.PutFromFile(context.Background(), name, filepath, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 解密下载
|
|
||||
_, err = client.Object.GetToFile(context.Background(), name, "./test.download", nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
fd, err = os.Open("./test.download") |
|
||||
log_status(err) |
|
||||
defer fd.Close() |
|
||||
m = md5.New() |
|
||||
io.Copy(m, fd) |
|
||||
decryptedDataMD5 := m.Sum(nil) |
|
||||
|
|
||||
if bytes.Compare(decryptedDataMD5, originDataMD5) != 0 { |
|
||||
fmt.Println("Error: encryptedData != originData") |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func multi_put_object() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// Case1 上传对象
|
|
||||
name := "test/example1" |
|
||||
|
|
||||
fmt.Println("============== multi_put_object ======================") |
|
||||
// 该标识信息唯一确认一个主加密密钥, 解密时,需要传入相同的标识信息
|
|
||||
// KMS加密时,该信息设置成EncryptionContext,最大支持1024字符,如果Encrypt指定了该参数,则在Decrypt 时需要提供同样的参数
|
|
||||
materialDesc := make(map[string]string) |
|
||||
//materialDesc["desc"] = "material information of your master encrypt key"
|
|
||||
|
|
||||
// 创建KMS客户端
|
|
||||
kmsclient, _ := coscrypto.NewKMSClient(c.GetCredential(), "ap-guangzhou") |
|
||||
// 创建KMS主加密密钥,标识信息和主密钥一一对应
|
|
||||
kmsID := os.Getenv("KMSID") |
|
||||
masterCipher, _ := coscrypto.CreateMasterKMS(kmsclient, kmsID, materialDesc) |
|
||||
// 创建加密客户端
|
|
||||
client := coscrypto.NewCryptoClient(c, masterCipher) |
|
||||
|
|
||||
contentLength := int64(1024*1024*10 + 1) |
|
||||
originData := make([]byte, contentLength) |
|
||||
_, err := rand.Read(originData) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 分块上传
|
|
||||
cryptoCtx := coscrypto.CryptoContext{ |
|
||||
DataSize: contentLength, |
|
||||
// 每个分块需要16字节对齐
|
|
||||
PartSize: cos_max(1024*1024, (contentLength/16/3)*16), |
|
||||
} |
|
||||
v, _, err := client.Object.InitiateMultipartUpload(context.Background(), name, nil, &cryptoCtx) |
|
||||
log_status(err) |
|
||||
// 切分数据
|
|
||||
chunks, _, err := cos.SplitSizeIntoChunks(contentLength, cryptoCtx.PartSize) |
|
||||
log_status(err) |
|
||||
optcom := &cos.CompleteMultipartUploadOptions{} |
|
||||
for _, chunk := range chunks { |
|
||||
opt := &cos.ObjectUploadPartOptions{ |
|
||||
ContentLength: chunk.Size, |
|
||||
} |
|
||||
f := bytes.NewReader(originData[chunk.OffSet : chunk.OffSet+chunk.Size]) |
|
||||
resp, err := client.Object.UploadPart(context.Background(), name, v.UploadID, chunk.Number, f, opt, &cryptoCtx) |
|
||||
log_status(err) |
|
||||
optcom.Parts = append(optcom.Parts, cos.Object{ |
|
||||
PartNumber: chunk.Number, ETag: resp.Header.Get("ETag"), |
|
||||
}) |
|
||||
} |
|
||||
_, _, err = client.Object.CompleteMultipartUpload(context.Background(), name, v.UploadID, optcom) |
|
||||
log_status(err) |
|
||||
|
|
||||
resp, err := client.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
defer resp.Body.Close() |
|
||||
decryptedData, _ := ioutil.ReadAll(resp.Body) |
|
||||
if bytes.Compare(decryptedData, originData) != 0 { |
|
||||
fmt.Println("Error: encryptedData != originData") |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
func multi_put_object_from_file() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// Case1 上传对象
|
|
||||
name := "test/example1" |
|
||||
|
|
||||
fmt.Println("============== multi_put_object_from_file ======================") |
|
||||
// 该标识信息唯一确认一个主加密密钥, 解密时,需要传入相同的标识信息
|
|
||||
// KMS加密时,该信息设置成EncryptionContext,最大支持1024字符,如果Encrypt指定了该参数,则在Decrypt 时需要提供同样的参数
|
|
||||
materialDesc := make(map[string]string) |
|
||||
//materialDesc["desc"] = "material information of your master encrypt key"
|
|
||||
|
|
||||
// 创建KMS客户端
|
|
||||
kmsclient, _ := coscrypto.NewKMSClient(c.GetCredential(), "ap-guangzhou") |
|
||||
// 创建KMS主加密密钥,标识信息和主密钥一一对应
|
|
||||
kmsID := os.Getenv("KMSID") |
|
||||
masterCipher, _ := coscrypto.CreateMasterKMS(kmsclient, kmsID, materialDesc) |
|
||||
// 创建加密客户端
|
|
||||
client := coscrypto.NewCryptoClient(c, masterCipher) |
|
||||
|
|
||||
filepath := "test" |
|
||||
stat, err := os.Stat(filepath) |
|
||||
log_status(err) |
|
||||
contentLength := stat.Size() |
|
||||
|
|
||||
// 分块上传
|
|
||||
cryptoCtx := coscrypto.CryptoContext{ |
|
||||
DataSize: contentLength, |
|
||||
// 每个分块需要16字节对齐
|
|
||||
PartSize: cos_max(1024*1024, (contentLength/16/3)*16), |
|
||||
} |
|
||||
// 切分数据
|
|
||||
_, chunks, _, err := cos.SplitFileIntoChunks(filepath, cryptoCtx.PartSize) |
|
||||
log_status(err) |
|
||||
|
|
||||
// init mulitupload
|
|
||||
v, _, err := client.Object.InitiateMultipartUpload(context.Background(), name, nil, &cryptoCtx) |
|
||||
log_status(err) |
|
||||
|
|
||||
// part upload
|
|
||||
optcom := &cos.CompleteMultipartUploadOptions{} |
|
||||
for _, chunk := range chunks { |
|
||||
fd, err := os.Open(filepath) |
|
||||
log_status(err) |
|
||||
opt := &cos.ObjectUploadPartOptions{ |
|
||||
ContentLength: chunk.Size, |
|
||||
} |
|
||||
fd.Seek(chunk.OffSet, os.SEEK_SET) |
|
||||
resp, err := client.Object.UploadPart(context.Background(), name, v.UploadID, chunk.Number, cos.LimitReadCloser(fd, chunk.Size), opt, &cryptoCtx) |
|
||||
log_status(err) |
|
||||
optcom.Parts = append(optcom.Parts, cos.Object{ |
|
||||
PartNumber: chunk.Number, ETag: resp.Header.Get("ETag"), |
|
||||
}) |
|
||||
} |
|
||||
// complete upload
|
|
||||
_, _, err = client.Object.CompleteMultipartUpload(context.Background(), name, v.UploadID, optcom) |
|
||||
log_status(err) |
|
||||
|
|
||||
_, err = client.Object.GetToFile(context.Background(), name, "test.download", nil) |
|
||||
log_status(err) |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
simple_put_object() |
|
||||
simple_put_object_from_file() |
|
||||
multi_put_object() |
|
||||
multi_put_object_from_file() |
|
||||
} |
|
@ -1,61 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"fmt" |
|
||||
"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("http://alanbj-1251668577.cos.ap-beijing.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
//设置超时时间
|
|
||||
Timeout: 100 * time.Second, |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: false, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: false, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.MultiUploadOptions{ |
|
||||
OptIni: nil, |
|
||||
PartSize: 1, |
|
||||
} |
|
||||
v, _, err := c.Object.MultiUpload( |
|
||||
context.Background(), "test/gomulput1G", "./test1G", opt, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Println(v) |
|
||||
} |
|
@ -1,58 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test_multipart.txt" |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", v.UploadID) |
|
||||
|
|
||||
resp, err := c.Object.AbortMultipartUpload(context.Background(), name, v.UploadID) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
} |
|
@ -1,74 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
"time" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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("http://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{ |
|
||||
ContentType: "text/html", |
|
||||
Listener: &cos.DefaultProgressListener{}, |
|
||||
}, |
|
||||
ACLHeaderOptions: &cos.ACLHeaderOptions{ |
|
||||
XCosACL: "private", |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
name := "append" + time.Now().Format(time.RFC3339) |
|
||||
str1 := "test append object 1" |
|
||||
pos, _, err := c.Object.Append(context.Background(), name, 0, strings.NewReader(str1), opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("pos: %d\n", pos) |
|
||||
|
|
||||
str2 := "test append object 2" |
|
||||
pos, _, err = c.Object.Append(context.Background(), name, pos, strings.NewReader(str2), opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("pos: %d\n", pos) |
|
||||
|
|
||||
} |
|
@ -1,75 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"path/filepath" |
|
||||
"sync" |
|
||||
|
|
||||
"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 upload(wg *sync.WaitGroup, c *cos.Client, keysCh <-chan string) { |
|
||||
defer wg.Done() |
|
||||
for key := range keysCh { |
|
||||
// 下载文件到当前目录
|
|
||||
_, filename := filepath.Split(key) |
|
||||
_, err := c.Object.GetToFile(context.Background(), key, filename, nil) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
keysCh := make(chan string, 2) |
|
||||
keys := []string{"test/test1", "test/test2", "test/test3"} |
|
||||
var wg sync.WaitGroup |
|
||||
threadpool := 2 |
|
||||
for i := 0; i < threadpool; i++ { |
|
||||
wg.Add(1) |
|
||||
go upload(&wg, c, keysCh) |
|
||||
} |
|
||||
for _, key := range keys { |
|
||||
keysCh <- key |
|
||||
} |
|
||||
close(keysCh) |
|
||||
wg.Wait() |
|
||||
} |
|
@ -1,73 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"sync" |
|
||||
|
|
||||
"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 upload(wg *sync.WaitGroup, c *cos.Client, files <-chan string) { |
|
||||
defer wg.Done() |
|
||||
for file := range files { |
|
||||
name := "test/" + file |
|
||||
_, _, err := c.Object.Upload(context.Background(), name, file, nil) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
filesCh := make(chan string, 2) |
|
||||
filePaths := []string{"test1", "test2", "test3"} |
|
||||
var wg sync.WaitGroup |
|
||||
threadpool := 2 |
|
||||
for i := 0; i < threadpool; i++ { |
|
||||
wg.Add(1) |
|
||||
go upload(&wg, c, filesCh) |
|
||||
} |
|
||||
for _, filePath := range filePaths { |
|
||||
filesCh <- filePath |
|
||||
} |
|
||||
close(filesCh) |
|
||||
wg.Wait() |
|
||||
} |
|
@ -1,108 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"math/rand" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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 initUpload(c *cos.Client, name string) *cos.InitiateMultipartUploadResult { |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
return v |
|
||||
} |
|
||||
|
|
||||
func uploadPart(c *cos.Client, name string, uploadID string, blockSize, n int) string { |
|
||||
|
|
||||
b := make([]byte, blockSize) |
|
||||
if _, err := rand.Read(b); err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
s := fmt.Sprintf("%X", b) |
|
||||
f := strings.NewReader(s) |
|
||||
|
|
||||
resp, err := c.Object.UploadPart( |
|
||||
context.Background(), name, uploadID, n, f, nil, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
return resp.Header.Get("Etag") |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/test_complete_upload.go" |
|
||||
up := initUpload(c, name) |
|
||||
uploadID := up.UploadID |
|
||||
blockSize := 1024 * 1024 * 3 |
|
||||
|
|
||||
opt := &cos.CompleteMultipartUploadOptions{} |
|
||||
for i := 1; i < 5; i++ { |
|
||||
etag := uploadPart(c, name, uploadID, blockSize, i) |
|
||||
opt.Parts = append(opt.Parts, cos.Object{ |
|
||||
PartNumber: i, ETag: etag}, |
|
||||
) |
|
||||
} |
|
||||
|
|
||||
c = cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
v, resp, err := c.Object.CompleteMultipartUpload( |
|
||||
context.Background(), name, uploadID, opt, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
fmt.Printf("%s\n", v.Location) |
|
||||
} |
|
@ -1,77 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"fmt" |
|
||||
"io/ioutil" |
|
||||
"time" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
source := "test/objectMove1.go" |
|
||||
expected := "test" |
|
||||
f := strings.NewReader(expected) |
|
||||
|
|
||||
_, err := c.Object.Put(context.Background(), source, f, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
soruceURL := fmt.Sprintf("%s/%s", u.Host, source) |
|
||||
dest := fmt.Sprintf("test/objectMove_%d.go", time.Now().Nanosecond()) |
|
||||
//opt := &cos.ObjectCopyOptions{}
|
|
||||
res, _, err := c.Object.Copy(context.Background(), dest, soruceURL, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%+v\n\n", res) |
|
||||
|
|
||||
resp, err := c.Object.Get(context.Background(), dest, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
bs, _ := ioutil.ReadAll(resp.Body) |
|
||||
resp.Body.Close() |
|
||||
result := string(bs) |
|
||||
if result != expected { |
|
||||
panic(fmt.Sprintf("%s != %s", result, expected)) |
|
||||
} |
|
||||
} |
|
@ -1,81 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"os" |
|
||||
|
|
||||
"net/url" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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 initUpload(c *cos.Client, name string) *cos.InitiateMultipartUploadResult { |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
return v |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
sourceUrl := "test-1253846586.cos.ap-guangzhou.myqcloud.com/source/copy_multi_upload.go" |
|
||||
name := "test/test_multi_upload.go" |
|
||||
up := initUpload(c, name) |
|
||||
uploadID := up.UploadID |
|
||||
|
|
||||
opt := &cos.ObjectCopyPartOptions{} |
|
||||
res, _, err := c.Object.CopyPart( |
|
||||
context.Background(), name, uploadID, 1, sourceUrl, opt) |
|
||||
log_status(err) |
|
||||
fmt.Println("ETag:", res.ETag) |
|
||||
|
|
||||
completeOpt := &cos.CompleteMultipartUploadOptions{} |
|
||||
completeOpt.Parts = append(completeOpt.Parts, cos.Object{ |
|
||||
PartNumber: 1, |
|
||||
ETag: res.ETag, |
|
||||
}) |
|
||||
v, resp, err := c.Object.CompleteMultipartUpload( |
|
||||
context.Background(), name, uploadID, completeOpt, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
fmt.Printf("%s\n", v.Location) |
|
||||
} |
|
@ -1,54 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/objectPut.go" |
|
||||
|
|
||||
_, err := c.Object.Delete(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,119 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"bytes" |
|
||||
"io" |
|
||||
|
|
||||
"math/rand" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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 genBigData(blockSize int) []byte { |
|
||||
b := make([]byte, blockSize) |
|
||||
if _, err := rand.Read(b); err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
return b |
|
||||
} |
|
||||
|
|
||||
func uploadMulti(c *cos.Client) []string { |
|
||||
names := []string{} |
|
||||
data := genBigData(1024 * 1024 * 1) |
|
||||
ctx := context.Background() |
|
||||
var r io.Reader |
|
||||
var name string |
|
||||
n := 3 |
|
||||
|
|
||||
for n > 0 { |
|
||||
name = fmt.Sprintf("test/test_multi_delete_%s", time.Now().Format(time.RFC3339)) |
|
||||
r = bytes.NewReader(data) |
|
||||
|
|
||||
c.Object.Put(ctx, name, r, nil) |
|
||||
names = append(names, name) |
|
||||
n-- |
|
||||
} |
|
||||
return names |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
ctx := context.Background() |
|
||||
|
|
||||
names := uploadMulti(c) |
|
||||
names = append(names, []string{"a", "b", "c", "a+bc/xx&?+# "}...) |
|
||||
obs := []cos.Object{} |
|
||||
for _, v := range names { |
|
||||
obs = append(obs, cos.Object{Key: v}) |
|
||||
} |
|
||||
//sha1 := ""
|
|
||||
opt := &cos.ObjectDeleteMultiOptions{ |
|
||||
Objects: obs, |
|
||||
//XCosSha1: sha1,
|
|
||||
//Quiet: true,
|
|
||||
} |
|
||||
|
|
||||
c = cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
v, _, err := c.Object.DeleteMulti(ctx, opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
for _, x := range v.DeletedObjects { |
|
||||
fmt.Printf("deleted %s\n", x.Key) |
|
||||
} |
|
||||
for _, x := range v.Errors { |
|
||||
fmt.Printf("error %s, %s, %s\n", x.Key, x.Code, x.Message) |
|
||||
} |
|
||||
} |
|
@ -1,94 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// 创建文件夹
|
|
||||
name := "example/" |
|
||||
_, err := c.Object.Put(context.Background(), name, strings.NewReader(""), nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 查看文件夹是否存在
|
|
||||
_, err = c.Object.Head(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 删除文件夹
|
|
||||
_, err = c.Object.Delete(context.Background(), name) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 上传到虚拟目录
|
|
||||
dir := "exampledir/" |
|
||||
filename := "exampleobject" |
|
||||
key := dir + filename |
|
||||
f := strings.NewReader("test file") |
|
||||
_, err = c.Object.Put(context.Background(), key, f, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 删除文件夹内所有文件
|
|
||||
var marker string |
|
||||
opt := &cos.BucketGetOptions{ |
|
||||
Prefix: dir, |
|
||||
MaxKeys: 1000, |
|
||||
} |
|
||||
isTruncated := true |
|
||||
for isTruncated { |
|
||||
opt.Marker = marker |
|
||||
v, _, err := c.Bucket.Get(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
break |
|
||||
} |
|
||||
for _, content := range v.Contents { |
|
||||
_, err = c.Object.Delete(context.Background(), content.Key) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
} |
|
||||
isTruncated = v.IsTruncated |
|
||||
marker = v.NextMarker |
|
||||
} |
|
||||
} |
|
@ -1,57 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"fmt" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: false, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: false, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.MultiDownloadOptions{ |
|
||||
ThreadPoolSize: 5, |
|
||||
} |
|
||||
resp, err := c.Object.Download( |
|
||||
context.Background(), "test", "./test1G", opt, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("done, %v\n", resp.Header) |
|
||||
} |
|
@ -1,64 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
"github.com/tencentyun/cos-go-sdk-v5/debug" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
) |
|
||||
|
|
||||
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() { |
|
||||
bucket := "test-1259654469" |
|
||||
bu, _ := url.Parse("https://" + bucket + ".cos.ap-guangzhou.myqcloud.com") |
|
||||
u, _ := url.Parse("http://ap-guangzhou.migration.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: bu, FetchURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
opt := &cos.PutFetchTaskOptions{ |
|
||||
Url: "http://" + bucket + ".cos.ap-guangzhou.myqcloud.com/exampleobject", |
|
||||
Key: "exampleobject", |
|
||||
} |
|
||||
|
|
||||
res, _, err := c.Object.PutFetchTask(context.Background(), bucket, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("res: %+v\n", res) |
|
||||
|
|
||||
time.Sleep(time.Second * 3) |
|
||||
|
|
||||
rs, _, err := c.Object.GetFetchTask(context.Background(), bucket, res.Data.TaskId) |
|
||||
log_status(err) |
|
||||
fmt.Printf("res: %+v\n", rs) |
|
||||
} |
|
@ -1,92 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"io" |
|
||||
"io/ioutil" |
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// Case1 通过resp.Body下载对象,Body需要关闭
|
|
||||
name := "test/example" |
|
||||
resp, err := c.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
bs, _ := ioutil.ReadAll(resp.Body) |
|
||||
resp.Body.Close() |
|
||||
fmt.Printf("%s\n", string(bs)) |
|
||||
|
|
||||
// Case2 下载对象到文件. Body需要关闭
|
|
||||
fd, err := os.OpenFile("test", os.O_WRONLY|os.O_CREATE, 0660) |
|
||||
log_status(err) |
|
||||
|
|
||||
defer fd.Close() |
|
||||
resp, err = c.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
io.Copy(fd, resp.Body) |
|
||||
resp.Body.Close() |
|
||||
|
|
||||
// Case3 下载对象到文件
|
|
||||
_, err = c.Object.GetToFile(context.Background(), name, "test", nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// Case4 range下载对象,可以根据range实现并发下载
|
|
||||
opt := &cos.ObjectGetOptions{ |
|
||||
ResponseContentType: "text/html", |
|
||||
Range: "bytes=0-3", |
|
||||
} |
|
||||
resp, err = c.Object.Get(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
bs, _ = ioutil.ReadAll(resp.Body) |
|
||||
resp.Body.Close() |
|
||||
fmt.Printf("%s\n", string(bs)) |
|
||||
|
|
||||
// Case5 下载对象到文件,查看下载进度
|
|
||||
opt = &cos.ObjectGetOptions{ |
|
||||
Listener: &cos.DefaultProgressListener{}, |
|
||||
} |
|
||||
_, err = c.Object.GetToFile(context.Background(), name, "test", opt) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,57 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/hello.txt" |
|
||||
v, _, err := c.Object.GetACL(context.Background(), name) |
|
||||
log_status(err) |
|
||||
for _, a := range v.AccessControlList { |
|
||||
fmt.Printf("%s, %s, %s\n", a.Grantee.Type, a.Grantee.ID, a.Permission) |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,61 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"strings" |
|
||||
|
|
||||
"io/ioutil" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
) |
|
||||
|
|
||||
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 upload(c *cos.Client, name string) { |
|
||||
f := strings.NewReader("test") |
|
||||
f = strings.NewReader("test xxx") |
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{ |
|
||||
ContentType: "text/html", |
|
||||
}, |
|
||||
ACLHeaderOptions: &cos.ACLHeaderOptions{ |
|
||||
XCosACL: "public-read", |
|
||||
}, |
|
||||
} |
|
||||
c.Object.Put(context.Background(), name, f, opt) |
|
||||
return |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, nil) |
|
||||
|
|
||||
name := "test/anonymous_get.go" |
|
||||
upload(c, name) |
|
||||
|
|
||||
resp, err := c.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
bs, _ := ioutil.ReadAll(resp.Body) |
|
||||
defer resp.Body.Close() |
|
||||
fmt.Printf("%s\n", string(bs)) |
|
||||
} |
|
@ -1,77 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"bytes" |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"io/ioutil" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"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() { |
|
||||
ak := os.Getenv("COS_SECRETID") |
|
||||
sk := os.Getenv("COS_SECRETKEY") |
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: ak, |
|
||||
SecretKey: sk, |
|
||||
Expire: time.Hour, |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test" |
|
||||
ctx := context.Background() |
|
||||
|
|
||||
// Normal header way to get object
|
|
||||
resp, err := c.Object.Get(ctx, name, nil) |
|
||||
log_status(err) |
|
||||
bs, _ := ioutil.ReadAll(resp.Body) |
|
||||
resp.Body.Close() |
|
||||
|
|
||||
// Get presigned
|
|
||||
presignedURL, err := c.Object.GetPresignedURL(ctx, http.MethodGet, name, ak, sk, time.Hour, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// Get object by presinged url
|
|
||||
resp2, err := http.Get(presignedURL.String()) |
|
||||
log_status(err) |
|
||||
bs2, _ := ioutil.ReadAll(resp2.Body) |
|
||||
resp2.Body.Close() |
|
||||
fmt.Printf("result2 is : %s\n", string(bs2)) |
|
||||
|
|
||||
fmt.Printf("%v\n\n", bytes.Compare(bs2, bs) == 0) |
|
||||
|
|
||||
} |
|
@ -1,52 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
// 使用 CVMCredentialsTransport
|
|
||||
Transport: &cos.CVMCredentialsTransport{ |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
// Notice when put a large file and set need the request body, might happend out of memory error.
|
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "exampleobject" |
|
||||
_, err := c.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,59 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
|
|
||||
"net/http" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
// Get 请求配置重试
|
|
||||
c.Conf.RetryOpt.Count = 3 // 错误重试次数,默认重试3次
|
|
||||
c.Conf.RetryOpt.Interval = time.Millisecond // 错误重试间隔时间,默认0
|
|
||||
c.Conf.RetryOpt.StatusCode = []int{} // 默认5xx都会重试,该参数配置其余需要重试的响应码
|
|
||||
|
|
||||
name := "exampleobject" |
|
||||
_, err := c.Object.Get(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,53 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/hello.txt" |
|
||||
_, err := c.Object.Head(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,55 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test_multipart" + time.Now().Format(time.RFC3339) |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", v.UploadID) |
|
||||
} |
|
@ -1,99 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"math/rand" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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 initUpload(c *cos.Client, name string) *cos.InitiateMultipartUploadResult { |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
return v |
|
||||
} |
|
||||
|
|
||||
func uploadPart(c *cos.Client, name string, uploadID string, blockSize, n int) string { |
|
||||
|
|
||||
b := make([]byte, blockSize) |
|
||||
if _, err := rand.Read(b); err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
s := fmt.Sprintf("%X", b) |
|
||||
f := strings.NewReader(s) |
|
||||
|
|
||||
resp, err := c.Object.UploadPart( |
|
||||
context.Background(), name, uploadID, n, f, nil, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
return resp.Header.Get("Etag") |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("http://alangz-1251668577.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/test_list_parts.go" |
|
||||
up := initUpload(c, name) |
|
||||
uploadID := up.UploadID |
|
||||
ctx := context.Background() |
|
||||
blockSize := 1024 * 1024 * 3 |
|
||||
|
|
||||
for i := 1; i < 5; i++ { |
|
||||
uploadPart(c, name, uploadID, blockSize, i) |
|
||||
} |
|
||||
|
|
||||
// opt := &cos.ObjectListPartsOptions{
|
|
||||
// MaxParts: "1",
|
|
||||
// }
|
|
||||
v, _, err := c.Object.ListParts(ctx, name, uploadID, nil) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
return |
|
||||
} |
|
||||
for _, p := range v.Parts { |
|
||||
fmt.Printf("%d, %s, %d\n", p.PartNumber, p.ETag, p.Size) |
|
||||
} |
|
||||
fmt.Printf("%s\n", v.Initiator.ID) |
|
||||
fmt.Printf("%s\n", v.Owner.ID) |
|
||||
} |
|
@ -1,98 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"math/rand" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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 initUpload(c *cos.Client, name string) *cos.InitiateMultipartUploadResult { |
|
||||
v, _, err := c.Object.InitiateMultipartUpload(context.Background(), name, nil) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%#v\n", v) |
|
||||
return v |
|
||||
} |
|
||||
|
|
||||
func uploadPart(c *cos.Client, name string, uploadID string, blockSize, n int) string { |
|
||||
|
|
||||
b := make([]byte, blockSize) |
|
||||
if _, err := rand.Read(b); err != nil { |
|
||||
log_status(err) |
|
||||
} |
|
||||
s := fmt.Sprintf("%X", b) |
|
||||
f := strings.NewReader(s) |
|
||||
|
|
||||
resp, err := c.Object.UploadPart( |
|
||||
context.Background(), name, uploadID, n, f, nil, |
|
||||
) |
|
||||
log_status(err) |
|
||||
fmt.Printf("%s\n", resp.Status) |
|
||||
return resp.Header.Get("Etag") |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
u, _ := url.Parse("http://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/test_list_parts.go" |
|
||||
up := initUpload(c, name) |
|
||||
uploadID := up.UploadID |
|
||||
blockSize := 1024 * 1024 * 3 |
|
||||
|
|
||||
for i := 1; i < 5; i++ { |
|
||||
uploadPart(c, name, uploadID, blockSize, i) |
|
||||
} |
|
||||
opt := &cos.ObjectListUploadsOptions{ |
|
||||
Prefix: cos.EncodeURIComponent("test/test_list_parts"), |
|
||||
MaxUploads: 100, |
|
||||
} |
|
||||
v, _, err := c.Object.ListUploads(context.Background(), opt) |
|
||||
if err != nil { |
|
||||
log_status(err) |
|
||||
return |
|
||||
} |
|
||||
fmt.Printf("%+v\n", v) |
|
||||
for _, p := range v.Upload { |
|
||||
fmt.Printf("%+v\n", p) |
|
||||
fmt.Printf("%v, %v, %v\n", p.Key, p.UploadID, p.Initiated) |
|
||||
} |
|
||||
} |
|
@ -1,68 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"fmt" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
source := "test/oldfile" |
|
||||
f := strings.NewReader("test") |
|
||||
|
|
||||
// 上传文件
|
|
||||
_, err := c.Object.Put(context.Background(), source, f, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// 重命名
|
|
||||
dest := "test/newfile" |
|
||||
soruceURL := fmt.Sprintf("%s/%s", u.Host, source) |
|
||||
_, _, err = c.Object.Copy(context.Background(), dest, soruceURL, nil) |
|
||||
log_status(err) |
|
||||
if err == nil { |
|
||||
_, err = c.Object.Delete(context.Background(), source, nil) |
|
||||
log_status(err) |
|
||||
} |
|
||||
} |
|
@ -1,66 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"fmt" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.MultiCopyOptions{ |
|
||||
OptCopy: &cos.ObjectCopyOptions{ |
|
||||
&cos.ObjectCopyHeaderOptions{ |
|
||||
XCosStorageClass: "Archive", |
|
||||
}, |
|
||||
nil, |
|
||||
}, |
|
||||
ThreadPoolSize: 10, |
|
||||
} |
|
||||
source := "exampleobject" |
|
||||
soruceURL := fmt.Sprintf("%s/%s", u.Host, source) |
|
||||
dest := fmt.Sprintf("destobject") |
|
||||
res, _, err := c.Object.MultiCopy(context.Background(), dest, soruceURL, opt) |
|
||||
log_status(err) |
|
||||
fmt.Printf("res:%+v\n", res) |
|
||||
} |
|
@ -1,57 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
name := "test/hello.txt" |
|
||||
opt := &cos.ObjectOptionsOptions{ |
|
||||
Origin: "http://www.qq.com", |
|
||||
AccessControlRequestMethod: "PUT", |
|
||||
} |
|
||||
_, err := c.Object.Options(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,68 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
) |
|
||||
|
|
||||
type URLToken struct { |
|
||||
SessionToken string `url:"x-cos-security-token,omitempty" header:"-"` |
|
||||
} |
|
||||
|
|
||||
func main() { |
|
||||
// 替换成您的临时密钥
|
|
||||
tak := os.Getenv("COS_SECRETID") |
|
||||
tsk := os.Getenv("COS_SECRETKEY") |
|
||||
token := &URLToken{ |
|
||||
SessionToken: "<token>", |
|
||||
} |
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{}) |
|
||||
|
|
||||
name := "exampleobject" |
|
||||
ctx := context.Background() |
|
||||
|
|
||||
// 方法1 通过 tag 设置 x-cos-security-token
|
|
||||
// Get presigned
|
|
||||
presignedURL, err := c.Object.GetPresignedURL(ctx, http.MethodGet, name, tak, tsk, time.Hour, token) |
|
||||
if err != nil { |
|
||||
fmt.Printf("Error: %v\n", err) |
|
||||
return |
|
||||
} |
|
||||
// Get object by presinged url
|
|
||||
resp, err := http.Get(presignedURL.String()) |
|
||||
if err != nil { |
|
||||
fmt.Printf("Error: %v\n", err) |
|
||||
} |
|
||||
defer resp.Body.Close() |
|
||||
fmt.Println(presignedURL.String()) |
|
||||
fmt.Printf("resp:%v\n", resp) |
|
||||
|
|
||||
// 方法2 通过 PresignedURLOptions 设置 x-cos-security-token
|
|
||||
opt := &cos.PresignedURLOptions{ |
|
||||
Query: &url.Values{}, |
|
||||
Header: &http.Header{}, |
|
||||
} |
|
||||
opt.Query.Add("x-cos-security-token", "<token>") |
|
||||
// Get presigned
|
|
||||
presignedURL, err = c.Object.GetPresignedURL(ctx, http.MethodGet, name, tak, tsk, time.Hour, opt) |
|
||||
if err != nil { |
|
||||
fmt.Printf("Error: %v\n", err) |
|
||||
return |
|
||||
} |
|
||||
// Get object by presinged url
|
|
||||
resp, err = http.Get(presignedURL.String()) |
|
||||
if err != nil { |
|
||||
fmt.Printf("Error: %v\n", err) |
|
||||
} |
|
||||
defer resp.Body.Close() |
|
||||
fmt.Println(presignedURL.String()) |
|
||||
fmt.Printf("resp:%v\n", resp) |
|
||||
} |
|
@ -1,80 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// Case1 上传对象
|
|
||||
name := "test/example" |
|
||||
f := strings.NewReader("test") |
|
||||
|
|
||||
_, err := c.Object.Put(context.Background(), name, f, nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// Case2 使用options上传对象
|
|
||||
f = strings.NewReader("test xxx") |
|
||||
opt := &cos.ObjectPutOptions{ |
|
||||
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{ |
|
||||
ContentType: "text/html", |
|
||||
}, |
|
||||
ACLHeaderOptions: &cos.ACLHeaderOptions{ |
|
||||
//XCosACL: "public-read",
|
|
||||
XCosACL: "private", |
|
||||
}, |
|
||||
} |
|
||||
_, err = c.Object.Put(context.Background(), name, f, opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
// Case3 通过本地文件上传对象
|
|
||||
_, err = c.Object.PutFromFile(context.Background(), name, "./test", nil) |
|
||||
log_status(err) |
|
||||
|
|
||||
// Case4 查看上传进度
|
|
||||
opt.ObjectPutHeaderOptions.Listener = &cos.DefaultProgressListener{} |
|
||||
_, err = c.Object.PutFromFile(context.Background(), name, "./test", opt) |
|
||||
} |
|
@ -1,80 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ObjectPutACLOptions{ |
|
||||
Header: &cos.ACLHeaderOptions{ |
|
||||
XCosACL: "private", |
|
||||
}, |
|
||||
} |
|
||||
name := "test/hello.txt" |
|
||||
_, err := c.Object.PutACL(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
|
|
||||
// with body
|
|
||||
opt = &cos.ObjectPutACLOptions{ |
|
||||
Body: &cos.ACLXml{ |
|
||||
Owner: &cos.Owner{ |
|
||||
ID: "qcs::cam::uin/100000760461:uin/100000760461", |
|
||||
}, |
|
||||
AccessControlList: []cos.ACLGrant{ |
|
||||
{ |
|
||||
Grantee: &cos.ACLGrantee{ |
|
||||
Type: "RootAccount", |
|
||||
ID: "qcs::cam::uin/100000760461:uin/100000760461", |
|
||||
}, |
|
||||
|
|
||||
Permission: "FULL_CONTROL", |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
_, err = c.Object.PutACL(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
} |
|
@ -1,59 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"net/http" |
|
||||
|
|
||||
"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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
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: false, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: false, |
|
||||
}, |
|
||||
}, |
|
||||
Timeout: 5 * time.Second, // HTTP超时时间
|
|
||||
}) |
|
||||
|
|
||||
// Case1 上传对象
|
|
||||
name := "test/example" |
|
||||
// Case3 通过本地文件上传对象
|
|
||||
ctx, _ := context.WithTimeout(context.Background(), 2*time.Second) // context超时时间
|
|
||||
_, err := c.Object.PutFromFile(ctx, name, "./test", nil) // 请求的超时时间为 min{context超时时间, HTTP超时时间}
|
|
||||
log_status(err) |
|
||||
} |
|
@ -1,65 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"net" |
|
||||
"net/http" |
|
||||
"net/url" |
|
||||
"os" |
|
||||
"time" |
|
||||
|
|
||||
"github.com/tencentyun/cos-go-sdk-v5" |
|
||||
) |
|
||||
|
|
||||
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") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
// base on http.DefaultTransport
|
|
||||
Transport: &http.Transport{ |
|
||||
Proxy: http.ProxyFromEnvironment, |
|
||||
DialContext: (&net.Dialer{ |
|
||||
Timeout: 30 * time.Second, |
|
||||
KeepAlive: 30 * time.Second, |
|
||||
DualStack: true, |
|
||||
}).DialContext, |
|
||||
MaxIdleConns: 100, |
|
||||
IdleConnTimeout: 90 * time.Second, |
|
||||
TLSHandshakeTimeout: 10 * time.Second, |
|
||||
ExpectContinueTimeout: 1 * time.Second, |
|
||||
// ResponseHeaderTimeout: 1 * time.Second,
|
|
||||
// MaxIdleConnsPerHost: 100,
|
|
||||
// MaxIdleConns: 100,
|
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
// Case1 上传对象
|
|
||||
name := "test/example" |
|
||||
// Case3 通过本地文件上传对象
|
|
||||
_, err := c.Object.PutFromFile(context.Background(), name, "./test", nil) // 请求的超时时间为 min{context超时时间, HTTP超时时间}
|
|
||||
log_status(err) |
|
||||
} |
|
@ -1,59 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"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-1253846586.cos.ap-guangzhou.myqcloud.com") |
|
||||
b := &cos.BaseURL{BucketURL: u} |
|
||||
c := cos.NewClient(b, &http.Client{ |
|
||||
Transport: &cos.AuthorizationTransport{ |
|
||||
SecretID: os.Getenv("COS_SECRETID"), |
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"), |
|
||||
Transport: &debug.DebugRequestTransport{ |
|
||||
RequestHeader: true, |
|
||||
RequestBody: true, |
|
||||
ResponseHeader: true, |
|
||||
ResponseBody: true, |
|
||||
}, |
|
||||
}, |
|
||||
}) |
|
||||
|
|
||||
opt := &cos.ObjectRestoreOptions{ |
|
||||
Days: 2, |
|
||||
Tier: &cos.CASJobParameters{ |
|
||||
// Standard, Exepdited and Bulk
|
|
||||
Tier: "Expedited", |
|
||||
}, |
|
||||
} |
|
||||
name := "archivetest" |
|
||||
_, err := c.Object.PostRestore(context.Background(), name, opt) |
|
||||
log_status(err) |
|
||||
} |
|
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue