1 Star 0 Fork 0

cesar / aliyun-oss-go-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
comm.go 3.54 KB
一键复制 编辑 原始数据 按行查看 历史
hangzws 提交于 2019-04-10 10:36 . fix code that is not concise and safe
package sample
import (
"fmt"
"os"
"strings"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
var (
pastDate = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
futureDate = time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
)
// HandleError is the error handling method in the sample code
func HandleError(err error) {
fmt.Println("occurred error:", err)
os.Exit(-1)
}
// GetTestBucket creates the test bucket
func GetTestBucket(bucketName string) (*oss.Bucket, error) {
// New client
client, err := oss.New(endpoint, accessID, accessKey)
if err != nil {
return nil, err
}
// Create bucket
err = client.CreateBucket(bucketName)
if err != nil {
return nil, err
}
// Get bucket
bucket, err := client.Bucket(bucketName)
if err != nil {
return nil, err
}
return bucket, nil
}
// DeleteTestBucketAndLiveChannel 删除sample的channelname和bucket,该函数为了简化sample,让sample代码更明了
func DeleteTestBucketAndLiveChannel(bucketName string) error {
// New Client
client, err := oss.New(endpoint, accessID, accessKey)
if err != nil {
return err
}
// Get Bucket
bucket, err := client.Bucket(bucketName)
if err != nil {
return err
}
marker := ""
for {
result, err := bucket.ListLiveChannel(oss.Marker(marker))
if err != nil {
HandleError(err)
}
for _, channel := range result.LiveChannel {
err := bucket.DeleteLiveChannel(channel.Name)
if err != nil {
HandleError(err)
}
}
if result.IsTruncated {
marker = result.NextMarker
} else {
break
}
}
// Delete Bucket
err = client.DeleteBucket(bucketName)
if err != nil {
return err
}
return nil
}
// DeleteTestBucketAndObject deletes the test bucket and its objects
func DeleteTestBucketAndObject(bucketName string) error {
// New client
client, err := oss.New(endpoint, accessID, accessKey)
if err != nil {
return err
}
// Get bucket
bucket, err := client.Bucket(bucketName)
if err != nil {
return err
}
// Delete part
keyMarker := oss.KeyMarker("")
uploadIDMarker := oss.UploadIDMarker("")
for {
lmur, err := bucket.ListMultipartUploads(keyMarker, uploadIDMarker)
if err != nil {
return err
}
for _, upload := range lmur.Uploads {
var imur = oss.InitiateMultipartUploadResult{Bucket: bucket.BucketName,
Key: upload.Key, UploadID: upload.UploadID}
err = bucket.AbortMultipartUpload(imur)
if err != nil {
return err
}
}
keyMarker = oss.KeyMarker(lmur.NextKeyMarker)
uploadIDMarker = oss.UploadIDMarker(lmur.NextUploadIDMarker)
if !lmur.IsTruncated {
break
}
}
// Delete objects
marker := oss.Marker("")
for {
lor, err := bucket.ListObjects(marker)
if err != nil {
return err
}
for _, object := range lor.Objects {
err = bucket.DeleteObject(object.Key)
if err != nil {
return err
}
}
marker = oss.Marker(lor.NextMarker)
if !lor.IsTruncated {
break
}
}
// Delete bucket
err = client.DeleteBucket(bucketName)
if err != nil {
return err
}
return nil
}
// Object defines pair of key and value
type Object struct {
Key string
Value string
}
// CreateObjects creates some objects
func CreateObjects(bucket *oss.Bucket, objects []Object) error {
for _, object := range objects {
err := bucket.PutObject(object.Key, strings.NewReader(object.Value))
if err != nil {
return err
}
}
return nil
}
// DeleteObjects deletes some objects.
func DeleteObjects(bucket *oss.Bucket, objects []Object) error {
for _, object := range objects {
err := bucket.DeleteObject(object.Key)
if err != nil {
return err
}
}
return nil
}
1
https://gitee.com/cesar28/aliyun-oss-go-sdk.git
git@gitee.com:cesar28/aliyun-oss-go-sdk.git
cesar28
aliyun-oss-go-sdk
aliyun-oss-go-sdk
v2.1.8

搜索帮助