OSDN Git Service

Create ossClient.go (#574)
[bytom/vapor.git] / vendor / github.com / aliyun / aliyun-oss-go-sdk / sample / bucket_requestpayment.go
1 package sample
2
3 import (
4         "fmt"
5         "strings"
6         "io/ioutil"
7         "github.com/aliyun/aliyun-oss-go-sdk/oss"
8 )
9
10 // BucketrRequestPaymentSample shows how to set, get the bucket request payment.
11 func BucketrRequestPaymentSample() {
12         // New client
13         client, err := oss.New(endpoint, accessID, accessKey)
14         if err != nil {
15                 HandleError(err)
16         }
17
18         // Create the bucket with default parameters
19         err = client.CreateBucket(bucketName)
20         if err != nil {
21                 HandleError(err)
22         }
23
24         reqPayConf := oss.RequestPaymentConfiguration{
25                 Payer: string(oss.Requester),
26         }
27
28         // Case 1: Set bucket request payment.
29         err = client.SetBucketRequestPayment(bucketName, reqPayConf)
30         if err != nil {
31                 HandleError(err)
32         }
33
34         // Get bucket request payment configuration
35         ret, err := client.GetBucketRequestPayment(bucketName)
36         if err != nil {
37                 HandleError(err)
38         }
39         fmt.Println("Bucket request payer:", ret.Payer)
40
41         if credentialUID == "" {
42                 fmt.Println("Please enter a credential User ID, if you want to test credential user.")
43                 clearData(client, bucketName)
44                 return
45         }
46         // Credential other User
47         policyInfo := `
48         {
49                 "Version":"1",
50                 "Statement":[
51                         {
52                                 "Action":[
53                                         "oss:*"
54                                 ],
55                                 "Effect":"Allow",
56                                 "Principal":["` + credentialUID + `"],
57                                 "Resource":["acs:oss:*:*:` + bucketName + `", "acs:oss:*:*:` + bucketName + `/*"]
58                         }
59                 ]
60         }`
61
62         err = client.SetBucketPolicy(bucketName, policyInfo)
63         if err != nil {
64                 HandleError(err)
65         }
66
67         // New a Credential client
68         creClient, err := oss.New(endpoint, credentialAccessID, credentialAccessKey)
69         if err != nil {
70                 HandleError(err)
71         }
72
73         // Get credential bucket
74         creBucket, err := creClient.Bucket(bucketName)
75         if err != nil {
76                 HandleError(err)
77         }
78
79         // Put object by credential User
80         key := "testCredentialObject"
81         objectValue := "this is a test string."
82         // Put object
83         err = creBucket.PutObject(key, strings.NewReader(objectValue), oss.RequestPayer(oss.Requester))
84         if err != nil {
85                 HandleError(err)
86         }
87         // Get object
88         body, err := creBucket.GetObject(key, oss.RequestPayer(oss.Requester))
89         if err != nil {
90                 HandleError(err)
91         }
92         defer body.Close()
93
94         data, err := ioutil.ReadAll(body)
95         if err != nil {
96                 HandleError(err)
97         }
98         fmt.Println(string(data))
99         
100         // Delete object
101         err = creBucket.DeleteObject(key, oss.RequestPayer(oss.Requester))
102         if err != nil {
103                 HandleError(err)
104         }
105
106         clearData(client, bucketName)
107 }
108
109 func clearData(client *oss.Client, bucketName string) {
110         // Delete bucket
111         err := client.DeleteBucket(bucketName)
112         if err != nil {
113                 HandleError(err)
114         }
115
116         fmt.Println("BucketrRequestPaymentSample completed")
117 }