Browse Source

add archive sample

鸣镝 8 years ago
parent
commit
7382d4f1ce
1 changed files with 74 additions and 0 deletions
  1. 74 0
      sample/archive.go

+ 74 - 0
sample/archive.go

@@ -0,0 +1,74 @@
+package sample
+
+import (
+	"fmt"
+	"strings"
+	"time"
+
+	"github.com/aliyun/aliyun-oss-go-sdk/oss"
+)
+
+// ArchiveSample Archive Sample
+func ArchiveSample() {
+	// create archive bucket
+	client, err := oss.New(endpoint, accessID, accessKey)
+	if err != nil {
+		HandleError(err)
+	}
+
+	err = client.CreateBucket(bucketName, oss.StorageClass(oss.StorageArchive))
+	if err != nil {
+		HandleError(err)
+	}
+
+	archiveBucket, err := client.Bucket(bucketName)
+	if err != nil {
+		HandleError(err)
+	}
+
+	// put archive object
+	var val = "花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。"
+	err = archiveBucket.PutObject(objectKey, strings.NewReader(val))
+	if err != nil {
+		HandleError(err)
+	}
+
+	// check whether the object is archive class
+	meta, err := archiveBucket.GetObjectDetailedMeta(objectKey)
+	if err != nil {
+		HandleError(err)
+	}
+
+	if meta.Get("X-Oss-Storage-Class") == string(oss.StorageArchive) {
+		// restore object
+		err = archiveBucket.RestoreObject(objectKey)
+		if err != nil {
+			HandleError(err)
+		}
+
+		// wait for restore completed
+		meta, err = archiveBucket.GetObjectDetailedMeta(objectKey)
+		for meta.Get("X-Oss-Restore") == "ongoing-request=\"true\"" {
+			fmt.Println("x-oss-restore:" + meta.Get("X-Oss-Restore"))
+			time.Sleep(1000 * time.Second)
+			meta, err = archiveBucket.GetObjectDetailedMeta(objectKey)
+		}
+	}
+
+	// get restored object
+	err = archiveBucket.GetObjectToFile(objectKey, localFile)
+	if err != nil {
+		HandleError(err)
+	}
+
+	// restore repeatedly
+	err = archiveBucket.RestoreObject(objectKey)
+
+	// delete object and bucket
+	err = DeleteTestBucketAndObject(bucketName)
+	if err != nil {
+		HandleError(err)
+	}
+
+	fmt.Println("ArchiveSample completed")
+}