Ver código fonte

client support header from options

taowei.wtw 5 anos atrás
pai
commit
12a973c156
2 arquivos alterados com 63 adições e 5 exclusões
  1. 22 4
      oss/client.go
  2. 41 1
      oss/client_test.go

+ 22 - 4
oss/client.go

@@ -745,11 +745,11 @@ func (client Client) GetBucketInfo(bucketName string, options ...Option) (GetBuc
 
 
 		if out.BucketInfo.SseRule.SSEAlgorithm == "None" {
 		if out.BucketInfo.SseRule.SSEAlgorithm == "None" {
 			out.BucketInfo.SseRule.SSEAlgorithm = ""
 			out.BucketInfo.SseRule.SSEAlgorithm = ""
-        }
-        
-        if out.BucketInfo.SseRule.KMSDataEncryption == "None" {
+		}
+
+		if out.BucketInfo.SseRule.KMSDataEncryption == "None" {
 			out.BucketInfo.SseRule.KMSDataEncryption = ""
 			out.BucketInfo.SseRule.KMSDataEncryption = ""
-        } 
+		}
 	}
 	}
 	return out, err
 	return out, err
 }
 }
@@ -1550,6 +1550,24 @@ func (client Client) do(method, bucketName string, params map[string]interface{}
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+	// option headers
+	addHeaders := make(map[string]string)
+	err = handleOptions(addHeaders, options)
+	if err != nil {
+		return nil, err
+	}
+
+	// merge header
+	if headers == nil {
+		headers = make(map[string]string)
+	}
+
+	for k, v := range addHeaders {
+		if _, ok := headers[k]; !ok {
+			headers[k] = v
+		}
+	}
+
 	resp, err := client.Conn.Do(method, bucketName, "", params, headers, data, 0, nil)
 	resp, err := client.Conn.Do(method, bucketName, "", params, headers, data, 0, nil)
 
 
 	// get response header
 	// get response header

+ 41 - 1
oss/client_test.go

@@ -3401,7 +3401,7 @@ func (s *OssClientSuite) TestBucketAsyncTask(c *C) {
 
 
 	objectName := objectNamePrefix + RandLowStr(6)
 	objectName := objectNamePrefix + RandLowStr(6)
 
 
-	// set asyn task
+	// set asyn task,IgnoreSameKey is false
 	asynConf := AsyncFetchTaskConfiguration{
 	asynConf := AsyncFetchTaskConfiguration{
 		Url:           "http://www.baidu.com",
 		Url:           "http://www.baidu.com",
 		Object:        objectName,
 		Object:        objectName,
@@ -3426,6 +3426,46 @@ func (s *OssClientSuite) TestBucketAsyncTask(c *C) {
 	c.Assert(asynConf.Callback, Equals, asynTask.TaskInfo.Callback)
 	c.Assert(asynConf.Callback, Equals, asynTask.TaskInfo.Callback)
 	c.Assert(asynConf.IgnoreSameKey, Equals, asynTask.TaskInfo.IgnoreSameKey)
 	c.Assert(asynConf.IgnoreSameKey, Equals, asynTask.TaskInfo.IgnoreSameKey)
 
 
+	// test again,IgnoreSameKey is true
+	asynConf.IgnoreSameKey = true
+	asynResult, err = client.SetBucketAsyncTask(bucketName, asynConf)
+	c.Assert(err, IsNil)
+	c.Assert(len(asynResult.TaskId) > 0, Equals, true)
+
+	asynTask, err = client.GetBucketAsyncTask(bucketName, asynResult.TaskId)
+	c.Assert(asynConf.IgnoreSameKey, Equals, asynTask.TaskInfo.IgnoreSameKey)
+
 	err = client.DeleteBucket(bucketName)
 	err = client.DeleteBucket(bucketName)
 	c.Assert(err, IsNil)
 	c.Assert(err, IsNil)
 }
 }
+
+func (s *OssClientSuite) TestClientOptionHeader(c *C) {
+	// create a bucket with default proprety
+	client, err := New(endpoint, accessID, accessKey)
+	c.Assert(err, IsNil)
+
+	bucketName := bucketNamePrefix + RandLowStr(6)
+
+	var respHeader http.Header
+	err = client.CreateBucket(bucketName, GetResponseHeader(&respHeader))
+	c.Assert(err, IsNil)
+	c.Assert(GetRequestId(respHeader) != "", Equals, true)
+
+	// put bucket version:enabled
+	var versioningConfig VersioningConfig
+	versioningConfig.Status = string(VersionEnabled)
+	err = client.SetBucketVersioning(bucketName, versioningConfig)
+	c.Assert(err, IsNil)
+
+	// get bucket version success,use payer
+	options := []Option{RequestPayer(BucketOwner), GetResponseHeader(&respHeader)}
+	versioningResult, err := client.GetBucketVersioning(bucketName, options...)
+	c.Assert(versioningResult.Status, Equals, "Enabled")
+	c.Assert(GetRequestId(respHeader) != "", Equals, true)
+
+	//list buckets,use payer
+	_, err = client.ListBuckets(options...)
+	c.Assert(err, IsNil)
+
+	ForceDeleteBucket(client, bucketName, c)
+}