• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

_example/H18-Aug-2019-

debug/H18-Aug-2019-

.bumpversion.cfgH A D18-Aug-201992

.gitignoreH A D18-Aug-2019300

.travis.ymlH A D18-Aug-2019380

CHANGELOG.mdH A D18-Aug-20195.7 KiB

LICENSEH A D18-Aug-20191 KiB

MakefileH A D18-Aug-2019394

README.mdH A D18-Aug-20196.2 KiB

auth.goH A D18-Aug-20198.7 KiB

auth_test.goH A D18-Aug-201910.1 KiB

bucket.goH A D18-Aug-20195.4 KiB

bucket_acl.goH A D18-Aug-20191.9 KiB

bucket_acl_test.goH A D18-Aug-20194.1 KiB

bucket_cors.goH A D18-Aug-20193.7 KiB

bucket_cors_test.goH A D18-Aug-20193.3 KiB

bucket_lifecycle.goH A D18-Aug-20196.2 KiB

bucket_lifecycle_test.goH A D18-Aug-20192.8 KiB

bucket_location.goH A D18-Aug-20191.2 KiB

bucket_location_test.goH A D18-Aug-2019810

bucket_part.goH A D18-Aug-20194.1 KiB

bucket_part_test.goH A D18-Aug-20193 KiB

bucket_tagging.goH A D18-Aug-20192.4 KiB

bucket_tagging_test.goH A D18-Aug-20192.1 KiB

bucket_test.goH A D18-Aug-20193.2 KiB

codelingo.yamlH A D18-Aug-201982

cos.goH A D18-Aug-201911.2 KiB

cos_test.goH A D18-Aug-20197.4 KiB

doc.goH A D18-Aug-20191.2 KiB

error.goH A D18-Aug-20191.2 KiB

error_test.goH A D18-Aug-20193.9 KiB

go.modH A D18-Aug-2019132

helper.goH A D18-Aug-20191.6 KiB

helper_test.goH A D18-Aug-20191.3 KiB

http.goH A D18-Aug-20192.8 KiB

object.goH A D18-Aug-201921.5 KiB

object_acl.goH A D18-Aug-20191.8 KiB

object_acl_test.goH A D18-Aug-20194.3 KiB

object_part.goH A D18-Aug-201910.8 KiB

object_part_test.goH A D18-Aug-20199.6 KiB

object_test.goH A D18-Aug-201913.1 KiB

service.goH A D18-Aug-2019950

service_test.goH A D18-Aug-20191.3 KiB

README.md

1# go-cos
2
3腾讯云对象存储服务 COS(Cloud Object Storage) Go SDK(API 版本:V5 版本的 XML API)。
4
5[![Build Status](https://img.shields.io/travis/mozillazg/go-cos/master.svg)](https://travis-ci.org/mozillazg/go-cos)
6[![Coverage Status](https://img.shields.io/codecov/c/github/mozillazg/go-cos/master.svg)](https://codecov.io/gh/mozillazg/go-cos)
7[![Go Report Card](https://goreportcard.com/badge/github.com/mozillazg/go-cos)](https://goreportcard.com/report/github.com/mozillazg/go-cos)
8[![GoDoc](https://godoc.org/github.com/mozillazg/go-cos?status.svg)](https://godoc.org/github.com/mozillazg/go-cos)
9
10## Install
11
12`go get -u github.com/mozillazg/go-cos`
13
14推荐使用 [go mod](https://github.com/golang/go/wiki/Modules) 之类的技术指定使用的 go-cos 包版本号。
15
16
17## Usage
18
19```go
20package main
21
22import (
23	"context"
24	"fmt"
25	"io/ioutil"
26	"net/http"
27	"net/url"
28	"os"
29
30	"github.com/mozillazg/go-cos"
31)
32
33func main() {
34	b, _ := cos.NewBaseURL("https://<bucket>-<appid>.cos.<region>.myqcloud.com")
35	c := cos.NewClient(b, &http.Client{
36		Transport: &cos.AuthorizationTransport{
37			SecretID:  os.Getenv("COS_SECRETID"),
38			SecretKey: os.Getenv("COS_SECRETKEY"),
39		},
40	})
41
42	name := "test/hello.txt"
43	resp, err := c.Object.Get(context.Background(), name, nil)
44	if err != nil {
45		panic(err)
46	}
47	defer resp.Body.Close()
48	bs, _ := ioutil.ReadAll(resp.Body)
49	fmt.Printf("%s\n", string(bs))
50}
51```
52
53备注:
54
55* SDK 不会自动设置超时时间,用户根据需要设置合适的超时时间(比如,设置 `http.Client` 的 `Timeout` 字段或者
56  `Transport` 字段之类的)或在需要时实现所需的超时机制(比如,通过 `context` 包实现)。
57* 所有的 API 在 [_example](./_example/) 目录下都有对应的使用示例(示例程序中用到的 `debug` 包只是调试用的不是必需的依赖)。
58
59## TODO
60
61Service API:
62
63* [x] Get Service(使用示例:[service/get.go](./_example/service/get.go))
64
65Bucket API:
66
67* [x] **Get Bucket**(搜索文件,使用示例:[bucket/get.go](./_example/bucket/get.go))
68* [x] Get Bucket ACL(使用示例:[bucket/getACL.go](./_example/bucket/getACL.go))
69* [x] Get Bucket CORS(使用示例:[bucket/getCORS.go](./_example/bucket/getCORS.go))
70* [x] Get Bucket Location(使用示例:[bucket/getLocation.go](./_example/bucket/getLocation.go))
71* [x] Get Buket Lifecycle(使用示例:[bucket/getLifecycle.go](./_example/bucket/getLifecycle.go))
72* [x] Get Bucket Tagging(使用示例:[bucket/getTagging.go](./_example/bucket/getTagging.go))
73* [ ] Get Bucket policy
74* [x] Put Bucket(创建 bucket,使用示例:[bucket/put.go](./_example/bucket/put.go))
75* [x] Put Bucket ACL(使用示例:[bucket/putACL.go](./_example/bucket/putACL.go))
76* [x] Put Bucket CORS(使用示例:[bucket/putCORS.go](./_example/bucket/putCORS.go))
77* [x] Put Bucket Lifecycle(使用示例:[bucket/putLifecycle.go](./_example/bucket/putLifecycle.go))
78* [x] Put Bucket Tagging(使用示例:[bucket/putTagging.go](./_example/bucket/putTagging.go))
79* [ ] Put Bucket policy
80* [x] Delete Bucket(删除 bucket,使用示例:[bucket/delete.go](./_example/bucket/delete.go))
81* [x] Delete Bucket CORS(使用示例:[bucket/deleteCORS.go](./_example/bucket/deleteCORS.go))
82* [x] Delete Bucket Lifecycle(使用示例:[bucket/deleteLifecycle.go](./_example/bucket/deleteLifecycle.go))
83* [x] Delete Bucket Tagging(使用示例:[bucket/deleteTagging.go](./_example/bucket/deleteTagging.go))
84* [ ] Delete Bucket policy
85* [x] Head Bucket(使用示例:[bucket/head.go](./_example/bucket/head.go))
86* [x] List Multipart Uploads(查询上传的分块,使用示例:[bucket/listMultipartUploads.go](./_example/bucket/listMultipartUploads.go))
87
88Object API:
89
90* [x] **Append Object**(增量更新文件,使用示例:[object/append.go](./_example/object/append.go))
91* [x] **Get Object**(下载文件,使用示例:[object/get.go](./_example/object/get.go))
92* [x] Get Object ACL(使用示例:[object/getACL.go](./_example/object/getACL.go))
93* [x] **Put Object**(上传文件,使用示例:[object/put.go](./_example/object/put.go) or [object/uploadFile.go](./_example/object/uploadFile.go))
94* [x] Put Object ACL(使用示例:[object/putACL.go](./_example/object/putACL.go))
95* [x] Put Object Copy(使用示例:[object/copy.go](./_example/object/copy.go))
96* [x] **Delete Object**(删除文件,使用示例:[object/delete.go](./_example/object/delete.go))
97* [ ] [Post Object](https://cloud.tencent.com/document/product/436/14690)
98* [ ] [Post Object restore](https://cloud.tencent.com/document/product/436/12633)
99* [x] Delete Multiple Object(使用示例:[object/deleteMultiple.go](./_example/object/deleteMultiple.go))
100* [x] Head Object(使用示例:[object/head.go](./_example/object/head.go))
101* [x] Options Object(使用示例:[object/options.go](./_example/object/options.go))
102* [x] **Initiate Multipart Upload**(初始化分块上传,使用示例:[object/initiateMultipartUpload.go](./_example/object/initiateMultipartUpload.go))
103* [x] **Upload Part**(上传一个分块,使用示例:[object/uploadPart.go](./_example/object/uploadPart.go))
104* [ ] [Upload Part - Copy](https://cloud.tencent.com/document/product/436/8287)
105* [x] **List Parts**(列出已上传的分块,使用示例:[object/listParts.go](./_example/object/listParts.go))
106* [x] **Complete Multipart Upload**(合并上传的分块,使用示例:[object/completeMultipartUpload.go](./_example/object/completeMultipartUpload.go))
107* [x] **Abort Multipart Upload**(取消分块上传,使用示例:[object/abortMultipartUpload.go](./_example/object/abortMultipartUpload.go))
108
109其他功能:
110
111* [x] **生成预签名授权 URL**
112    * [x] 通过预签名授权 URL 下载文件,示例:[object/getWithPresignedURL.go](./_example/object/getWithPresignedURL.go)
113    * [x] 通过预签名授权 URL 上传文件,示例:[object/putWithPresignedURL.go](./_example/object/putWithPresignedURL.go)
114* [x] 支持临时密钥,示例: [object/sessionToken.go](./_example/object/sessionToken.go)
115* [x] 支持使用使用第三方 http client 包或单元测试时 mock 方法调用结果,示例:[object/mock.go](./_example/object/mock.go)
116