OSDN Git Service

Create ossClient.go (#574)
[bytom/vapor.git] / vendor / github.com / aliyun / aliyun-oss-go-sdk / sample / list_objects.go
1 package sample
2
3 import (
4         "fmt"
5
6         "github.com/aliyun/aliyun-oss-go-sdk/oss"
7 )
8
9 // ListObjectsSample shows the file list, including default and specified parameters.
10 func ListObjectsSample() {
11         var myObjects = []Object{
12                 {"my-object-1", ""},
13                 {"my-object-11", ""},
14                 {"my-object-2", ""},
15                 {"my-object-21", ""},
16                 {"my-object-22", ""},
17                 {"my-object-3", ""},
18                 {"my-object-31", ""},
19                 {"my-object-32", ""}}
20
21         // Create bucket
22         bucket, err := GetTestBucket(bucketName)
23         if err != nil {
24                 HandleError(err)
25         }
26
27         // Create objects
28         err = CreateObjects(bucket, myObjects)
29         if err != nil {
30                 HandleError(err)
31         }
32
33         // Case 1: Use default parameters
34         lor, err := bucket.ListObjects()
35         if err != nil {
36                 HandleError(err)
37         }
38         fmt.Println("my objects:", getObjectsFormResponse(lor))
39
40         // Case 2: Specify max keys
41         lor, err = bucket.ListObjects(oss.MaxKeys(3))
42         if err != nil {
43                 HandleError(err)
44         }
45         fmt.Println("my objects max num:", getObjectsFormResponse(lor))
46
47         // Case 3: Specify prefix of objects
48         lor, err = bucket.ListObjects(oss.Prefix("my-object-2"))
49         if err != nil {
50                 HandleError(err)
51         }
52         fmt.Println("my objects prefix :", getObjectsFormResponse(lor))
53
54         // Case 4: Specify the marker
55         lor, err = bucket.ListObjects(oss.Marker("my-object-22"))
56         if err != nil {
57                 HandleError(err)
58         }
59         fmt.Println("my objects marker :", getObjectsFormResponse(lor))
60
61         // Case 5: List object with paging. each page has 3 objects
62         marker := oss.Marker("")
63         for {
64                 lor, err = bucket.ListObjects(oss.MaxKeys(3), marker)
65                 if err != nil {
66                         HandleError(err)
67                 }
68                 marker = oss.Marker(lor.NextMarker)
69                 fmt.Println("my objects page :", getObjectsFormResponse(lor))
70                 if !lor.IsTruncated {
71                         break
72                 }
73         }
74
75         // Case 6: List object with paging , marker and max keys; return 3 items each time.
76         marker = oss.Marker("my-object-22")
77         for {
78                 lor, err = bucket.ListObjects(oss.MaxKeys(3), marker)
79                 if err != nil {
80                         HandleError(err)
81                 }
82                 marker = oss.Marker(lor.NextMarker)
83                 fmt.Println("my objects marker&page :", getObjectsFormResponse(lor))
84                 if !lor.IsTruncated {
85                         break
86                 }
87         }
88
89         // Case 7: List object with paging , with prefix and max keys; return 2 items each time.
90         pre := oss.Prefix("my-object-2")
91         marker = oss.Marker("")
92         for {
93                 lor, err = bucket.ListObjects(oss.MaxKeys(2), marker, pre)
94                 if err != nil {
95                         HandleError(err)
96                 }
97                 pre = oss.Prefix(lor.Prefix)
98                 marker = oss.Marker(lor.NextMarker)
99                 fmt.Println("my objects prefix&page :", getObjectsFormResponse(lor))
100                 if !lor.IsTruncated {
101                         break
102                 }
103         }
104
105         err = DeleteObjects(bucket, myObjects)
106         if err != nil {
107                 HandleError(err)
108         }
109
110         // Case 8: Combine the prefix and delimiter for grouping. ListObjectsResponse.Objects is the objects returned.
111         // ListObjectsResponse.CommonPrefixes is the common prefixes returned.
112         myObjects = []Object{
113                 {"fun/test.txt", ""},
114                 {"fun/test.jpg", ""},
115                 {"fun/movie/001.avi", ""},
116                 {"fun/movie/007.avi", ""},
117                 {"fun/music/001.mp3", ""},
118                 {"fun/music/001.mp3", ""}}
119
120         // Create object
121         err = CreateObjects(bucket, myObjects)
122         if err != nil {
123                 HandleError(err)
124         }
125
126         lor, err = bucket.ListObjects(oss.Prefix("fun/"), oss.Delimiter("/"))
127         if err != nil {
128                 HandleError(err)
129         }
130         fmt.Println("my objects prefix :", getObjectsFormResponse(lor),
131                 "common prefixes:", lor.CommonPrefixes)
132
133         // Delete object and bucket
134         err = DeleteTestBucketAndObject(bucketName)
135         if err != nil {
136                 HandleError(err)
137         }
138
139         fmt.Println("ListObjectsSample completed")
140 }
141
142 func getObjectsFormResponse(lor oss.ListObjectsResult) string {
143         var output string
144         for _, object := range lor.Objects {
145                 output += object.Key + "  "
146         }
147         return output
148 }