github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/bucket_requestpayment.go (about) 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 }