github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/comm.go (about) 1 package sample 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 "time" 8 9 "github.com/aliyun/aliyun-oss-go-sdk/oss" 10 ) 11 12 var ( 13 pastDate = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) 14 futureDate = time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC) 15 ) 16 17 // HandleError is the error handling method in the sample code 18 func HandleError(err error) { 19 fmt.Println("occurred error:", err) 20 os.Exit(-1) 21 } 22 23 // GetTestBucket creates the test bucket 24 func GetTestBucket(bucketName string) (*oss.Bucket, error) { 25 // New client 26 client, err := oss.New(endpoint, accessID, accessKey) 27 if err != nil { 28 return nil, err 29 } 30 31 // Create bucket 32 err = client.CreateBucket(bucketName) 33 if err != nil { 34 return nil, err 35 } 36 37 // Get bucket 38 bucket, err := client.Bucket(bucketName) 39 if err != nil { 40 return nil, err 41 } 42 43 return bucket, nil 44 } 45 46 // DeleteTestBucketAndLiveChannel 删除sample的channelname和bucket,该函数为了简化sample,让sample代码更明了 47 func DeleteTestBucketAndLiveChannel(bucketName string) error { 48 // New Client 49 client, err := oss.New(endpoint, accessID, accessKey) 50 if err != nil { 51 return err 52 } 53 54 // Get Bucket 55 bucket, err := client.Bucket(bucketName) 56 if err != nil { 57 return err 58 } 59 60 marker := "" 61 for { 62 result, err := bucket.ListLiveChannel(oss.Marker(marker)) 63 if err != nil { 64 HandleError(err) 65 } 66 67 for _, channel := range result.LiveChannel { 68 err := bucket.DeleteLiveChannel(channel.Name) 69 if err != nil { 70 HandleError(err) 71 } 72 } 73 74 if result.IsTruncated { 75 marker = result.NextMarker 76 } else { 77 break 78 } 79 } 80 81 // Delete Bucket 82 err = client.DeleteBucket(bucketName) 83 if err != nil { 84 return err 85 } 86 87 return nil 88 } 89 90 // DeleteTestBucketAndObject deletes the test bucket and its objects 91 func DeleteTestBucketAndObject(bucketName string) error { 92 // New client 93 client, err := oss.New(endpoint, accessID, accessKey) 94 if err != nil { 95 return err 96 } 97 98 // Get bucket 99 bucket, err := client.Bucket(bucketName) 100 if err != nil { 101 return err 102 } 103 104 // Delete part 105 keyMarker := oss.KeyMarker("") 106 uploadIDMarker := oss.UploadIDMarker("") 107 for { 108 lmur, err := bucket.ListMultipartUploads(keyMarker, uploadIDMarker) 109 if err != nil { 110 return err 111 } 112 for _, upload := range lmur.Uploads { 113 var imur = oss.InitiateMultipartUploadResult{Bucket: bucket.BucketName, 114 Key: upload.Key, UploadID: upload.UploadID} 115 err = bucket.AbortMultipartUpload(imur) 116 if err != nil { 117 return err 118 } 119 } 120 keyMarker = oss.KeyMarker(lmur.NextKeyMarker) 121 uploadIDMarker = oss.UploadIDMarker(lmur.NextUploadIDMarker) 122 if !lmur.IsTruncated { 123 break 124 } 125 } 126 127 // Delete objects 128 marker := oss.Marker("") 129 for { 130 lor, err := bucket.ListObjects(marker) 131 if err != nil { 132 return err 133 } 134 for _, object := range lor.Objects { 135 err = bucket.DeleteObject(object.Key) 136 if err != nil { 137 return err 138 } 139 } 140 marker = oss.Marker(lor.NextMarker) 141 if !lor.IsTruncated { 142 break 143 } 144 } 145 146 // Delete bucket 147 err = client.DeleteBucket(bucketName) 148 if err != nil { 149 return err 150 } 151 152 return nil 153 } 154 155 // Object defines pair of key and value 156 type Object struct { 157 Key string 158 Value string 159 } 160 161 // CreateObjects creates some objects 162 func CreateObjects(bucket *oss.Bucket, objects []Object) error { 163 for _, object := range objects { 164 err := bucket.PutObject(object.Key, strings.NewReader(object.Value)) 165 if err != nil { 166 return err 167 } 168 } 169 return nil 170 } 171 172 // DeleteObjects deletes some objects. 173 func DeleteObjects(bucket *oss.Bucket, objects []Object) error { 174 for _, object := range objects { 175 err := bucket.DeleteObject(object.Key) 176 if err != nil { 177 return err 178 } 179 } 180 return nil 181 }