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  }