--- /dev/null
+package sample
+
+import (
+ "fmt"
+ "io/ioutil"
+ "strings"
+
+ "github.com/aliyun/aliyun-oss-go-sdk/oss"
+)
+
+// CnameSample shows the cname usage
+func CnameSample() {
+ // New client
+ client, err := oss.New(endpoint4Cname, accessID, accessKey, oss.UseCname(true))
+ if err != nil {
+ HandleError(err)
+ }
+
+ // Create bucket
+ err = client.CreateBucket(bucketName)
+ if err != nil {
+ HandleError(err)
+ }
+
+ // Set bucket ACL
+ err = client.SetBucketACL(bucketName, oss.ACLPrivate)
+ if err != nil {
+ HandleError(err)
+ }
+
+ // Look up bucket ACL
+ gbar, err := client.GetBucketACL(bucketName)
+ if err != nil {
+ HandleError(err)
+ }
+ fmt.Println("Bucket ACL:", gbar.ACL)
+
+ // List buckets, the list operation could not be done by cname's endpoint
+ _, err = client.ListBuckets()
+ if err == nil {
+ HandleError(err)
+ }
+
+ bucket, err := client.Bucket(bucketName)
+ if err != nil {
+ HandleError(err)
+ }
+
+ objectValue := "长忆观潮, 满郭人争江上望。来疑沧海尽成空, 万面鼓声中。弄潮儿向涛头立, 手把红旗旗不湿。别来几向梦中看, 梦觉尚心寒。"
+
+ // Put object
+ err = bucket.PutObject(objectKey, strings.NewReader(objectValue))
+ if err != nil {
+ HandleError(err)
+ }
+
+ // Get object
+ body, err := bucket.GetObject(objectKey)
+ if err != nil {
+ HandleError(err)
+ }
+ data, err := ioutil.ReadAll(body)
+ body.Close()
+ if err != nil {
+ HandleError(err)
+ }
+ fmt.Println(objectKey, ":", string(data))
+
+ // Put object from file
+ err = bucket.PutObjectFromFile(objectKey, localFile)
+ if err != nil {
+ HandleError(err)
+ }
+
+ // Get object to file
+ err = bucket.GetObjectToFile(objectKey, localFile)
+ if err != nil {
+ HandleError(err)
+ }
+
+ // List objects
+ lor, err := bucket.ListObjects()
+ if err != nil {
+ HandleError(err)
+ }
+ fmt.Println("objects:", lor.Objects)
+
+ // Delete object
+ err = bucket.DeleteObject(objectKey)
+ if err != nil {
+ HandleError(err)
+ }
+
+ fmt.Println("CnameSample completed")
+}