# README
go-cos
腾讯云对象存储服务 COS(Cloud Object Storage) Go SDK(API 版本:V5 版本的 XML API)。
Install
go get -u github.com/mozillazg/go-cos
推荐使用 go mod 之类的技术指定使用的 go-cos 包版本号。
Usage
package main
import (
"context"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
"github.com/mozillazg/go-cos"
)
func main() {
b, _ := cos.NewBaseURL("https://<bucket>-<appid>.cos.<region>.myqcloud.com")
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: os.Getenv("COS_SECRETID"),
SecretKey: os.Getenv("COS_SECRETKEY"),
},
})
name := "test/hello.txt"
resp, err := c.Object.Get(context.Background(), name, nil)
if err != nil {
panic(err)
}
defer resp.Body.Close()
bs, _ := ioutil.ReadAll(resp.Body)
fmt.Printf("%s\n", string(bs))
}
备注:
- SDK 不会自动设置超时时间,用户根据需要设置合适的超时时间(比如,设置
http.Client
的Timeout
字段或者Transport
字段之类的)或在需要时实现所需的超时机制(比如,通过context
包实现)。 - 所有的 API 在 _example 目录下都有对应的使用示例(示例程序中用到的
debug
包只是调试用的不是必需的依赖)。
TODO
Service API:
- Get Service(使用示例:service/get.go)
Bucket API:
- Get Bucket(搜索文件,使用示例:bucket/get.go)
- Get Bucket ACL(使用示例:bucket/getACL.go)
- Get Bucket CORS(使用示例:bucket/getCORS.go)
- Get Bucket Location(使用示例:bucket/getLocation.go)
- Get Buket Lifecycle(使用示例:bucket/getLifecycle.go)
- Get Bucket Tagging(使用示例:bucket/getTagging.go)
- Get Bucket policy
- Put Bucket(创建 bucket,使用示例:bucket/put.go)
- Put Bucket ACL(使用示例:bucket/putACL.go)
- Put Bucket CORS(使用示例:bucket/putCORS.go)
- Put Bucket Lifecycle(使用示例:bucket/putLifecycle.go)
- Put Bucket Tagging(使用示例:bucket/putTagging.go)
- Put Bucket policy
- Delete Bucket(删除 bucket,使用示例:bucket/delete.go)
- Delete Bucket CORS(使用示例:bucket/deleteCORS.go)
- Delete Bucket Lifecycle(使用示例:bucket/deleteLifecycle.go)
- Delete Bucket Tagging(使用示例:bucket/deleteTagging.go)
- Delete Bucket policy
- Head Bucket(使用示例:bucket/head.go)
- List Multipart Uploads(查询上传的分块,使用示例:bucket/listMultipartUploads.go)
Object API:
- Append Object(增量更新文件,使用示例:object/append.go)
- Get Object(下载文件,使用示例:object/get.go)
- Get Object ACL(使用示例:object/getACL.go)
- Put Object(上传文件,使用示例:object/put.go or object/uploadFile.go)
- Put Object ACL(使用示例:object/putACL.go)
- Put Object Copy(使用示例:object/copy.go)
- Delete Object(删除文件,使用示例:object/delete.go)
- Post Object
- Post Object restore
- Delete Multiple Object(使用示例:object/deleteMultiple.go)
- Head Object(使用示例:object/head.go)
- Options Object(使用示例:object/options.go)
- Initiate Multipart Upload(初始化分块上传,使用示例:object/initiateMultipartUpload.go)
- Upload Part(上传一个分块,使用示例:object/uploadPart.go)
- Upload Part - Copy
- List Parts(列出已上传的分块,使用示例:object/listParts.go)
- Complete Multipart Upload(合并上传的分块,使用示例:object/completeMultipartUpload.go)
- Abort Multipart Upload(取消分块上传,使用示例:object/abortMultipartUpload.go)
其他功能:
- 生成预签名授权 URL
- 通过预签名授权 URL 下载文件,示例:object/getWithPresignedURL.go
- 通过预签名授权 URL 上传文件,示例:object/putWithPresignedURL.go
- 支持临时密钥,示例: object/sessionToken.go
- 支持使用使用第三方 http client 包或单元测试时 mock 方法调用结果,示例:object/mock.go
# Packages
No description provided by the author
# Functions
AddAuthorizationHeader 给 req 增加签名信息.
NewAuthTime 生成 AuthTime 的便捷函数
expire: 从现在开始多久过期.
NewBaseURL 生成 BaseURL.
NewBucketURL 生成 BaseURL 所需的 BucketURL
bucketName: bucket 名称 AppID: 应用 ID Region: 区域代码,详见 https://cloud.tencent.com/document/product/436/6224 secure: 是否使用 https.
NewClient returns a new COS API client.
# Constants
MethodBucketDelete method name of Bucket.Delete.
MethodBucketDeleteCORS method name of Bucket.DeleteCORS.
MethodBucketDeleteLifecycle method name of Bucket.DeleteLifecycle.
MethodBucketGet method name of Bucket.Get.
MethodBucketGetACL method name of Bucket.GetACL.
MethodBucketGetCORS method name of Bucket.GetCORS.
MethodBucketGetLifecycle method name of Bucket.GetLifecycle.
MethodBucketGetLocation method name of Bucket.GetLocation.
MethodBucketHead method name of Bucket.Head.
MethodBucketListMultipartUploads method name of Bucket.ListMultipartUploads.
MethodBucketPut method name of Bucket.Put.
MethodBucketPutACL method name of Bucket.PutACL.
MethodBucketPutCORS method name of Bucket.PutCORS.
MethodBucketPutLifecycle method name of Bucket.PutLifecycle.
MethodDeleteTagging method name of Bucket.DeleteTagging.
MethodGetTagging method name of Bucket.GetTagging.
MethodObjectAbortMultipartUpload method name of Object.AbortMultipartUpload.
MethodObjectAppend method name of Object.Append.
MethodObjectCompleteMultipartUpload method name of Object.CompleteMultipartUpload.
MethodObjectCopy method name of Object.Copy.
MethodObjectDelete method name of Object.Delete.
MethodObjectDeleteMulti method name of Object.DeleteMulti.
MethodObjectGet method name of Object.Get.
MethodObjectGetACL method name of Object.GetACL.
MethodObjectHead method name of Object.Head.
MethodObjectInitiateMultipartUpload method name of Object.InitiateMultipartUpload.
MethodObjectListParts method name of Object.ListParts.
MethodObjectListPartsWithOpt method name of Object.ListPartsWithOpt.
MethodObjectOptions method name of Object.Options.
MethodObjectPut method name of Object.Put.
MethodObjectPutACL method name of Object.PutACL.
MethodObjectUploadPart method name of Object.UploadPart.
MethodPutTagging method name of Bucket.PutTagging.
MethodServiceGet method name of Service.Get.
ObjectTypeAppendable : appendable.
ObjectTypeNormal : normal.
PermissionFullControl 权限值: FULL_CONTROL.
PermissionRead 权限值: READ.
PermissionWrite 权限值: WRITE.
ServerSideEncryptionAES256 服务端加密算法: AES256.
StorageClassArchive Object 的存储级别: ARCHIVE.
StorageClassStandard Object 的存储级别: STANDARD.
StorageClassStandardTA Object 的存储级别: STANDARD_IA.
Version ...
# Structs
ACLGrant ...
ACLGrantee ...
ACLHeaderOptions ...
ACLXml ..
Auth 签名相关的认证信息.
AuthorizationTransport 给请求增加 Authorization header.
AuthTime 用于生成签名所需的 q-sign-time 和 q-key-time 相关参数.
BaseURL 访问各 API 所需的基础 URL.
Bucket ...
BucketCORSRule ..
BucketGetCORSResult ..
BucketGetLifecycleResult ..
BucketGetLocationResult ...
BucketGetOptions 请求参数
https://cloud.tencent.com/document/product/436/7734.
BucketGetResult 响应结果
https://cloud.tencent.com/document/product/436/7734.
BucketGetTaggingResult ...
BucketLifecycleAbortIncompleteMultipartUpload ...
BucketLifecycleExpiration ...
BucketLifecycleFilter ...
BucketLifecycleRule ..
BucketLifecycleTransition ...
BucketPutACLOptions ..
BucketPutCORSOptions ..
BucketPutLifecycleOptions ...
BucketPutTaggingOptions ...
BucketTaggingTag ...
Caller 方法调用信息,用于 Sender 和 ResponseParser 中判断是来自哪个方法的调用.
A Client manages communication with the COS API.
CompleteMultipartUploadOptions ..
CompleteMultipartUploadResult ..
DefaultResponseParser 是默认的 ResponseParser 实现.
DefaultSender 是基于 http.Client 的默认 Sender 实现.
ErrorResponse 包含 COS HTTP API 返回的错误信息
https://cloud.tencent.com/document/product/436/7730.
InitiateMultipartUploadOptions ...
InitiateMultipartUploadResult ...
ListMultipartUploadsOptions ..
ListMultipartUploadsResult ..
MultipartUpload 每个 Multipart Upload 的信息.
Object ...
ObjectCopyHeaderOptions ..
ObjectCopyOptions ..
ObjectCopyResult ...
ObjectDeleteMultiOptions ..
ObjectDeleteMultiResult ..
ObjectGetOptions ..
ObjectHeadOptions ...
ObjectListPartsOptions ...
ObjectListPartsResult ..
ObjectOptionsOptions ..
ObjectPutACLOptions ...
ObjectPutHeaderOptions ...
ObjectPutOptions ...
ObjectUploadPartOptions ...
Owner ...
Response API 响应.
ServiceGetResult ...
# Interfaces
ResponseParser 定义了一个用于解析响应的接口(反序列化 body 或错误检查)。 可以用于替换默认的解析响应的实现, 从而实现使用自定义的解析方法或写单元测试时 mock 接口结果的需求
实现自定义的 ResponseParser 时可以参考 DefaultResponseParser 的实现。.
Sender 定义了一个用来发送 http 请求的接口。 可以用于替换默认的基于 http.Client 的实现, 从而实现使用第三方 http client 或写单元测试时 mock 接口结果的需求。
实现自定义的 Sender 时可以参考 DefaultSender 的实现。.
# Type aliases
BucketGetACLResult ..
BucketPutOptions ...
BucketService ..
Initiator ...
MethodName 用于 Caller 中表示调用的是哪个方法.
ObjectGetACLResult ...
ObjectService ..
ServiceService ..