From b97a490e28370fecc475bf8b1a82df0d5a52a424 Mon Sep 17 00:00:00 2001 From: jojoliang Date: Mon, 30 Sep 2019 15:22:41 +0800 Subject: [PATCH] update bucket domain and website struct --- bucket_domain.go | 6 ++-- bucket_website.go | 22 +++++++++--- bucket_website_test.go | 86 +++++++++++++++++++++++--------------------- costesting/ci_test.go | 27 +++++++------- example/bucket/putWebsite.go | 26 +++++++------- 5 files changed, 94 insertions(+), 73 deletions(-) diff --git a/bucket_domain.go b/bucket_domain.go index 87f78b6..73836d4 100644 --- a/bucket_domain.go +++ b/bucket_domain.go @@ -8,9 +8,9 @@ import ( type BucketPutDomainOptions struct { XMLName xml.Name `xml:"DomainConfiguration"` - Status string `xml:"DomainRule>Status,omitempty"` - Name string `xml:"DomainRule>Name,omitempty"` - Type string `xml:"DomainRule>Type,omitempty"` + Status string `xml:"DomainRule>Status"` + Name string `xml:"DomainRule>Name"` + Type string `xml:"DomainRule>Type"` ForcedReplacement string `xml:"DomainRule>ForcedReplacement,omitempty"` } type BucketGetDomainResult BucketPutDomainOptions diff --git a/bucket_website.go b/bucket_website.go index 3052bf1..1e43429 100644 --- a/bucket_website.go +++ b/bucket_website.go @@ -15,12 +15,24 @@ type WebsiteRoutingRule struct { RedirectReplaceKeyPrefix string `xml:"Redirect>ReplaceKeyPrefixWith,omitempty"` } +type WebsiteRoutingRules struct { + Rules []WebsiteRoutingRule `xml:"RoutingRule,omitempty"` +} + +type ErrorDocument struct { + Key string `xml:"Key,omitempty"` +} + +type RedirectRequestsProtocol struct { + Protocol string `xml:"Protocol,omitempty"` +} + type BucketPutWebsiteOptions struct { - XMLName xml.Name `xml:"WebsiteConfiguration"` - Index string `xml:"IndexDocument>Suffix"` - RedirectProtocol string `xml:"RedirectAllRequestsTo>Protocol,omitempty"` - Error string `xml:"ErrorDocument>Key,omitempty"` - Rules []WebsiteRoutingRule `xml:"RoutingRules>RoutingRule,omitempty"` + XMLName xml.Name `xml:"WebsiteConfiguration"` + Index string `xml:"IndexDocument>Suffix"` + RedirectProtocol *RedirectRequestsProtocol `xml:"RedirectAllRequestsTo,omitempty"` + Error *ErrorDocument `xml:"ErrorDocument,omitempty"` + RoutingRules *WebsiteRoutingRules `xml:"RoutingRules,omitempty"` } type BucketGetWebsiteResult BucketPutWebsiteOptions diff --git a/bucket_website_test.go b/bucket_website_test.go index c59bcc8..9cee073 100644 --- a/bucket_website_test.go +++ b/bucket_website_test.go @@ -26,9 +26,6 @@ func TestBucketService_GetWebsite(t *testing.T) { https - - Error.html - @@ -67,25 +64,28 @@ func TestBucketService_GetWebsite(t *testing.T) { } want := &BucketGetWebsiteResult{ - XMLName: xml.Name{Local: "WebsiteConfiguration"}, - Index: "index.html", - RedirectProtocol: "https", - Error: "Error.html", - Rules: []WebsiteRoutingRule{ - { - ConditionErrorCode: "404", - RedirectProtocol: "https", - RedirectReplaceKey: "404.html", - }, - { - ConditionPrefix: "docs/", - RedirectProtocol: "https", - RedirectReplaceKeyPrefix: "documents/", - }, - { - ConditionPrefix: "img/", - RedirectProtocol: "https", - RedirectReplaceKey: "demo.jpg", + XMLName: xml.Name{Local: "WebsiteConfiguration"}, + Index: "index.html", + RedirectProtocol: &RedirectRequestsProtocol{ + "https", + }, + RoutingRules: &WebsiteRoutingRules{ + Rules: []WebsiteRoutingRule{ + { + ConditionErrorCode: "404", + RedirectProtocol: "https", + RedirectReplaceKey: "404.html", + }, + { + ConditionPrefix: "docs/", + RedirectProtocol: "https", + RedirectReplaceKeyPrefix: "documents/", + }, + { + ConditionPrefix: "img/", + RedirectProtocol: "https", + RedirectReplaceKey: "demo.jpg", + }, }, }, } @@ -100,24 +100,30 @@ func TestBucketService_PutWebsite(t *testing.T) { defer teardown() opt := &BucketPutWebsiteOptions{ - Index: "index.html", - RedirectProtocol: "https", - Error: "Error.html", - Rules: []WebsiteRoutingRule{ - { - ConditionErrorCode: "404", - RedirectProtocol: "https", - RedirectReplaceKey: "404.html", - }, - { - ConditionPrefix: "docs/", - RedirectProtocol: "https", - RedirectReplaceKeyPrefix: "documents/", - }, - { - ConditionPrefix: "img/", - RedirectProtocol: "https", - RedirectReplaceKey: "demo.jpg", + Index: "index.html", + RedirectProtocol: &RedirectRequestsProtocol{ + "https", + }, + Error: &ErrorDocument{ + "Error.html", + }, + RoutingRules: &WebsiteRoutingRules{ + []WebsiteRoutingRule{ + { + ConditionErrorCode: "404", + RedirectProtocol: "https", + RedirectReplaceKey: "404.html", + }, + { + ConditionPrefix: "docs/", + RedirectProtocol: "https", + RedirectReplaceKeyPrefix: "documents/", + }, + { + ConditionPrefix: "img/", + RedirectProtocol: "https", + RedirectReplaceKey: "demo.jpg", + }, }, }, } diff --git a/costesting/ci_test.go b/costesting/ci_test.go index 8e485ee..e842ffe 100644 --- a/costesting/ci_test.go +++ b/costesting/ci_test.go @@ -307,19 +307,20 @@ func (s *CosTestSuite) TestPutGetDeleteLifeCycle() { func (s *CosTestSuite) TestPutGetDeleteWebsite() { opt := &cos.BucketPutWebsiteOptions{ - Index: "index.html", - Error: "index_backup.html", - RedirectProtocol: "https", - Rules: []cos.WebsiteRoutingRule{ - { - ConditionErrorCode: "404", - RedirectProtocol: "https", - RedirectReplaceKey: "404.html", - }, - { - ConditionPrefix: "docs/", - RedirectProtocol: "https", - RedirectReplaceKeyPrefix: "documents/", + Index: "index.html", + Error: &cos.ErrorDocument{"index_backup.html"}, + RoutingRules: &cos.WebsiteRoutingRules{ + []cos.WebsiteRoutingRule{ + { + ConditionErrorCode: "404", + RedirectProtocol: "https", + RedirectReplaceKey: "404.html", + }, + { + ConditionPrefix: "docs/", + RedirectProtocol: "https", + RedirectReplaceKeyPrefix: "documents/", + }, }, }, } diff --git a/example/bucket/putWebsite.go b/example/bucket/putWebsite.go index c87fb23..fc09b28 100644 --- a/example/bucket/putWebsite.go +++ b/example/bucket/putWebsite.go @@ -30,18 +30,20 @@ func main() { opt := &cos.BucketPutWebsiteOptions{ Index: "index.html", - Error: "index_backup.html", - RedirectProtocol: "https", - Rules: []cos.WebsiteRoutingRule{ - { - ConditionErrorCode: "404", - RedirectProtocol: "https", - RedirectReplaceKey: "404.html", - }, - { - ConditionPrefix: "docs/", - RedirectProtocol: "https", - RedirectReplaceKeyPrefix: "documents/", + Error: &cos.ErrorDocument{"index_backup.html"}, + RedirectProtocol: &cos.RedirectRequestsProtocol{"https"}, + RoutingRules: &cos.WebsiteRoutingRules{ + []cos.WebsiteRoutingRule{ + { + ConditionErrorCode: "404", + RedirectProtocol: "https", + RedirectReplaceKey: "404.html", + }, + { + ConditionPrefix: "docs/", + RedirectProtocol: "https", + RedirectReplaceKeyPrefix: "documents/", + }, }, }, }