package cos import ( "context" "encoding/xml" "net/http" ) // BucketCORSRule is the rule of BucketCORS type BucketCORSRule struct { ID string `xml:"ID,omitempty"` AllowedMethods []string `xml:"AllowedMethod"` AllowedOrigins []string `xml:"AllowedOrigin"` AllowedHeaders []string `xml:"AllowedHeader,omitempty"` MaxAgeSeconds int `xml:"MaxAgeSeconds,omitempty"` ExposeHeaders []string `xml:"ExposeHeader,omitempty"` } // BucketGetCORSResult is the result of GetBucketCORS type BucketGetCORSResult struct { XMLName xml.Name `xml:"CORSConfiguration"` Rules []BucketCORSRule `xml:"CORSRule,omitempty"` } // GetCORS 实现 Bucket 跨域访问配置读取。 // // https://www.qcloud.com/document/product/436/8274 func (s *BucketService) GetCORS(ctx context.Context) (*BucketGetCORSResult, *Response, error) { var res BucketGetCORSResult sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/?cors", method: http.MethodGet, result: &res, } resp, err := s.client.doRetry(ctx, &sendOpt) return &res, resp, err } // BucketPutCORSOptions is the option of PutBucketCORS type BucketPutCORSOptions struct { XMLName xml.Name `xml:"CORSConfiguration"` Rules []BucketCORSRule `xml:"CORSRule,omitempty"` } // PutCORS 实现 Bucket 跨域访问设置,您可以通过传入XML格式的配置文件实现配置,文件大小限制为64 KB。 // // https://www.qcloud.com/document/product/436/8279 func (s *BucketService) PutCORS(ctx context.Context, opt *BucketPutCORSOptions) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/?cors", method: http.MethodPut, body: opt, } resp, err := s.client.doRetry(ctx, &sendOpt) return resp, err } // DeleteCORS 实现 Bucket 跨域访问配置删除。 // // https://www.qcloud.com/document/product/436/8283 func (s *BucketService) DeleteCORS(ctx context.Context) (*Response, error) { sendOpt := sendOptions{ baseURL: s.client.BaseURL.BucketURL, uri: "/?cors", method: http.MethodDelete, } resp, err := s.client.doRetry(ctx, &sendOpt) return resp, err }