Skip to content

Commit

Permalink
support transfer accelerator api
Browse files Browse the repository at this point in the history
  • Loading branch information
taowei.wtw authored and kkuai committed Apr 8, 2021
1 parent 00b8166 commit e3c86e5
Show file tree
Hide file tree
Showing 5 changed files with 118 additions and 8 deletions.
61 changes: 61 additions & 0 deletions oss/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1527,6 +1527,67 @@ func (client Client) GetBucketWorm(bucketName string, options ...Option) (WormCo
return out, err
}

// SetBucketTransferAcc set bucket transfer acceleration configuration
// bucketName the bucket name.
// accConf bucket transfer acceleration configuration
// error it's nil if no error, otherwise it's an error object.
//
func (client Client) SetBucketTransferAcc(bucketName string, accConf TransferAccConfiguration, options ...Option) error {
bs, err := xml.Marshal(accConf)
if err != nil {
return err
}
buffer := new(bytes.Buffer)
buffer.Write(bs)

contentType := http.DetectContentType(buffer.Bytes())
headers := make(map[string]string)
headers[HTTPHeaderContentType] = contentType

params := map[string]interface{}{}
params["transferAcceleration"] = nil
resp, err := client.do("PUT", bucketName, params, headers, buffer, options...)
if err != nil {
return err
}
defer resp.Body.Close()
return CheckRespCode(resp.StatusCode, []int{http.StatusOK})
}

// GetBucketTransferAcc get bucket transfer acceleration configuration
// bucketName the bucket name.
// accConf bucket transfer acceleration configuration
// error it's nil if no error, otherwise it's an error object.
//
func (client Client) GetBucketTransferAcc(bucketName string, options ...Option) (TransferAccConfiguration, error) {
var out TransferAccConfiguration
params := map[string]interface{}{}
params["transferAcceleration"] = nil
resp, err := client.do("GET", bucketName, params, nil, nil)
if err != nil {
return out, err
}
defer resp.Body.Close()

err = xmlUnmarshal(resp.Body, &out)
return out, err
}

// DeleteBucketTransferAcc delete bucket transfer acceleration configuration
// bucketName the bucket name.
// error it's nil if no error, otherwise it's an error object.
//
func (client Client) DeleteBucketTransferAcc(bucketName string, options ...Option) error {
params := map[string]interface{}{}
params["transferAcceleration"] = nil
resp, err := client.do("DELETE", bucketName, params, nil, nil)
if err != nil {
return err
}
defer resp.Body.Close()
return CheckRespCode(resp.StatusCode, []int{http.StatusNoContent})
}

// LimitUploadSpeed set upload bandwidth limit speed,default is 0,unlimited
// upSpeed KB/s, 0 is unlimited,default is 0
// error it's nil if success, otherwise failure
Expand Down
55 changes: 49 additions & 6 deletions oss/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1832,14 +1832,14 @@ func (s *OssClientSuite) TestSetBucketWebsiteXml(c *C) {
c.Assert(*res.RoutingRules[0].Redirect.MirrorCheckMd5, Equals, false)
c.Assert(*res.RoutingRules[0].Redirect.MirrorHeaders.PassAll, Equals, false)

// test GetBucketWebsite xml
xmlText, err:= client.GetBucketWebsiteXml(bucketNameTest)
c.Assert(err, IsNil)
// test GetBucketWebsite xml
xmlText, err := client.GetBucketWebsiteXml(bucketNameTest)
c.Assert(err, IsNil)

c.Assert(strings.Contains(xmlText, "<Pass>myheader-key1</Pass>"), Equals, true)
c.Assert(strings.Contains(xmlText, "<Pass>myheader-key2</Pass>"), Equals, true)
c.Assert(strings.Contains(xmlText, "<Pass>myheader-key1</Pass>"), Equals, true)
c.Assert(strings.Contains(xmlText, "<Pass>myheader-key2</Pass>"), Equals, true)

err = client.DeleteBucket(bucketNameTest)
err = client.DeleteBucket(bucketNameTest)
c.Assert(err, IsNil)
}

Expand Down Expand Up @@ -3796,3 +3796,46 @@ func (s *OssClientSuite) TestExtendBucketWorm(c *C) {
err = client.DeleteBucket(bucketNameTest)
c.Assert(err, IsNil)
}

// TestBucketTransferAcc
func (s *OssClientSuite) TestBucketTransferAcc(c *C) {
var bucketNameTest = bucketNamePrefix + "-acc-" + RandLowStr(6)
client, err := New(endpoint, accessID, accessKey)
c.Assert(err, IsNil)

err = client.CreateBucket(bucketNameTest)
c.Assert(err, IsNil)

accConfig := TransferAccConfiguration{}
accConfig.Enabled = true

// SetBucketTransferAcc true
err = client.SetBucketTransferAcc(bucketNameTest, accConfig)
c.Assert(err, IsNil)

// GetBucketTransferAcc
accConfigRes, err := client.GetBucketTransferAcc(bucketNameTest)
c.Assert(err, IsNil)
c.Assert(accConfigRes.Enabled, Equals, true)

// SetBucketTransferAcc false
accConfig.Enabled = false
err = client.SetBucketTransferAcc(bucketNameTest, accConfig)
c.Assert(err, IsNil)

// GetBucketTransferAcc
accConfigRes, err = client.GetBucketTransferAcc(bucketNameTest)
c.Assert(err, IsNil)
c.Assert(accConfigRes.Enabled, Equals, false)

// DeleteBucketTransferAcc
err = client.DeleteBucketTransferAcc(bucketNameTest)
c.Assert(err, IsNil)

// GetBucketTransferAcc
_, err = client.GetBucketTransferAcc(bucketNameTest)
c.Assert(err, NotNil)

err = client.DeleteBucket(bucketNameTest)
c.Assert(err, IsNil)
}
2 changes: 1 addition & 1 deletion oss/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ var signKeyList = []string{"acl", "uploads", "location", "cors",
"inventory", "inventoryId", "continuation-token", "asyncFetch",
"worm", "wormId", "wormExtend", "withHashContext",
"x-oss-enable-md5", "x-oss-enable-sha1", "x-oss-enable-sha256",
"x-oss-hash-ctx", "x-oss-md5-ctx",
"x-oss-hash-ctx", "x-oss-md5-ctx", "transferAcceleration",
}

// init initializes Conn
Expand Down
2 changes: 1 addition & 1 deletion oss/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ const (

NullVersion = "null"

Version = "v2.1.7" // Go SDK version
Version = "v2.1.8" // Go SDK version
)

// FrameType
Expand Down
6 changes: 6 additions & 0 deletions oss/type.go
Original file line number Diff line number Diff line change
Expand Up @@ -1246,3 +1246,9 @@ type WormConfiguration struct {
RetentionPeriodInDays int `xml:"RetentionPeriodInDays"` // specify retention days
CreationDate string `xml:"CreationDate,omitempty"`
}

// TransferAccConfiguration define transfer acceleration configuration
type TransferAccConfiguration struct {
XMLName xml.Name `xml:"TransferAccelerationConfiguration"`
Enabled bool `xml:"Enabled"`
}

0 comments on commit e3c86e5

Please sign in to comment.