Skip to content

Commit

Permalink
add GetBucketCORSXml,SetBucketCORSXml,GetBucketLifecycleXml
Browse files Browse the repository at this point in the history
  • Loading branch information
taowei.wtw authored and kkuai committed Mar 24, 2022
1 parent 02312bb commit 4460ade
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 4 deletions.
51 changes: 48 additions & 3 deletions oss/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func (client Client) CreateBucket(bucketName string, options ...Option) error {

// create bucket xml
func (client Client) CreateBucketXml(bucketName string, xmlBody string, options ...Option) error {
buffer := new(bytes.Buffer)
buffer := new(bytes.Buffer)
buffer.Write([]byte(xmlBody))
contentType := http.DetectContentType(buffer.Bytes())
headers := map[string]string{}
Expand All @@ -159,9 +159,9 @@ func (client Client) CreateBucketXml(bucketName string, xmlBody string, options
params := map[string]interface{}{}
resp, err := client.do("PUT", bucketName, params, headers, buffer, options...)
if err != nil {
return err
return err
}

defer resp.Body.Close()
return CheckRespCode(resp.StatusCode, []int{http.StatusOK})
}
Expand Down Expand Up @@ -398,6 +398,20 @@ func (client Client) GetBucketLifecycle(bucketName string, options ...Option) (G
return out, err
}

func (client Client) GetBucketLifecycleXml(bucketName string, options ...Option) (string, error) {
params := map[string]interface{}{}
params["lifecycle"] = nil
resp, err := client.do("GET", bucketName, params, nil, nil, options...)
if err != nil {
return "", err
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
out := string(body)
return out, err
}

// SetBucketReferer sets the bucket's referer whitelist and the flag if allowing empty referrer.
//
// To avoid stealing link on OSS data, OSS supports the HTTP referrer header. A whitelist referrer could be set either by API or web console, as well as
Expand Down Expand Up @@ -752,6 +766,23 @@ func (client Client) SetBucketCORS(bucketName string, corsRules []CORSRule, opti
return CheckRespCode(resp.StatusCode, []int{http.StatusOK})
}

func (client Client) SetBucketCORSXml(bucketName string, xmlBody string, options ...Option) error {
buffer := new(bytes.Buffer)
buffer.Write([]byte(xmlBody))
contentType := http.DetectContentType(buffer.Bytes())
headers := map[string]string{}
headers[HTTPHeaderContentType] = contentType

params := map[string]interface{}{}
params["cors"] = 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})
}

// DeleteBucketCORS deletes the bucket's static website settings.
//
// bucketName the bucket name.
Expand Down Expand Up @@ -790,6 +821,20 @@ func (client Client) GetBucketCORS(bucketName string, options ...Option) (GetBuc
return out, err
}

func (client Client) GetBucketCORSXml(bucketName string, options ...Option) (string, error) {
params := map[string]interface{}{}
params["cors"] = nil
resp, err := client.do("GET", bucketName, params, nil, nil, options...)
if err != nil {
return "", err
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
out := string(body)
return out, err
}

// GetBucketInfo gets the bucket information.
//
// bucketName the bucket name.
Expand Down
16 changes: 16 additions & 0 deletions oss/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1065,6 +1065,9 @@ func (s *OssClientSuite) TestSetBucketLifecycleXml(c *C) {
err = client.SetBucketLifecycleXml(bucketNameTest, xmlBody, options...)
c.Assert(err, NotNil)

strXml, err := client.GetBucketLifecycleXml(bucketNameTest, options...)
c.Assert(len(strXml) > 0, Equals, true)

err = client.DeleteBucket(bucketNameTest)
c.Assert(err, IsNil)
}
Expand Down Expand Up @@ -2034,6 +2037,19 @@ func (s *OssClientSuite) TestSetBucketCORS(c *C) {
c.Assert(err, IsNil)
c.Assert(len(gbcr.CORSRules), Equals, 2)

// GetBucketCORSXml
xmlBody, err := client.GetBucketCORSXml(bucketNameTest)
c.Assert(err, IsNil)

err = client.SetBucketCORSXml(bucketNameTest, xmlBody)
c.Assert(err, IsNil)

// get again
time.Sleep(timeoutInOperation)
gbcr, err = client.GetBucketCORS(bucketNameTest)
c.Assert(err, IsNil)
c.Assert(len(gbcr.CORSRules), Equals, 2)

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

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

NullVersion = "null"

Version = "v2.2.1" // Go SDK version
Version = "v2.2.2" // Go SDK version
)

// FrameType
Expand Down

0 comments on commit 4460ade

Please sign in to comment.