OSDN Git Service

Create ossClient.go (#574)
[bytom/vapor.git] / vendor / github.com / aliyun / aliyun-oss-go-sdk / sample / archive.go
1 package sample
2
3 import (
4         "fmt"
5         "strings"
6         "time"
7
8         "github.com/aliyun/aliyun-oss-go-sdk/oss"
9 )
10
11 // ArchiveSample archives sample
12 func ArchiveSample() {
13         // Create archive bucket
14         client, err := oss.New(endpoint, accessID, accessKey)
15         if err != nil {
16                 HandleError(err)
17         }
18
19         err = client.CreateBucket(bucketName, oss.StorageClass(oss.StorageArchive))
20         if err != nil {
21                 HandleError(err)
22         }
23
24         archiveBucket, err := client.Bucket(bucketName)
25         if err != nil {
26                 HandleError(err)
27         }
28
29         // Put archive object
30         var val = "花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。"
31         err = archiveBucket.PutObject(objectKey, strings.NewReader(val))
32         if err != nil {
33                 HandleError(err)
34         }
35
36         // Check whether the object is archive class
37         meta, err := archiveBucket.GetObjectDetailedMeta(objectKey)
38         if err != nil {
39                 HandleError(err)
40         }
41
42         if meta.Get("X-Oss-Storage-Class") == string(oss.StorageArchive) {
43                 // Restore object
44                 err = archiveBucket.RestoreObject(objectKey)
45                 if err != nil {
46                         HandleError(err)
47                 }
48
49                 // Wait for restore completed
50                 meta, err = archiveBucket.GetObjectDetailedMeta(objectKey)
51                 for meta.Get("X-Oss-Restore") == "ongoing-request=\"true\"" {
52                         fmt.Println("x-oss-restore:" + meta.Get("X-Oss-Restore"))
53                         time.Sleep(1000 * time.Second)
54                         meta, err = archiveBucket.GetObjectDetailedMeta(objectKey)
55                 }
56         }
57
58         // Get restored object
59         err = archiveBucket.GetObjectToFile(objectKey, localFile)
60         if err != nil {
61                 HandleError(err)
62         }
63
64         // Restore repeatedly
65         err = archiveBucket.RestoreObject(objectKey)
66
67         // Delete object and bucket
68         err = DeleteTestBucketAndObject(bucketName)
69         if err != nil {
70                 HandleError(err)
71         }
72
73         fmt.Println("ArchiveSample completed")
74 }