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