1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
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 sample中的错误处理
func HandleError(err error) {
fmt.Println("occurred error:", err)
os.Exit(-1)
}
// GetTestBucket 创建sample的Bucket并返回OssBucket对象,该函数为了简化sample,让sample代码更明了
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
}
// DeleteTestBucketAndObject 删除sample的object和bucket,该函数为了简化sample,让sample代码更明了
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
lmur, err := bucket.ListMultipartUploads()
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
}
}
// Delete Objects
lor, err := bucket.ListObjects()
if err != nil {
return err
}
for _, object := range lor.Objects {
err = bucket.DeleteObject(object.Key)
if err != nil {
return err
}
}
// Delete Bucket
err = client.DeleteBucket(bucketName)
if err != nil {
return err
}
return nil
}
// Object pair of key and value
type Object struct {
Key string
Value string
}
// CreateObjects 创建一组对象,该函数为了简化sample,让sample代码更明了
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 删除sample的object和bucket,该函数为了简化sample,让sample代码更明了
func DeleteObjects(bucket *oss.Bucket, objects []Object) error {
for _, object := range objects {
err := bucket.DeleteObject(object.Key)
if err != nil {
return err
}
}
return nil
}
|