| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package tos
- import (
- "bytes"
- "context"
- "net/http"
- )
- func (cli *ClientV2) PutBucketWebsite(ctx context.Context, input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
- if input == nil {
- return nil, InputIsNilClientError
- }
- if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
- return nil, err
- }
- body := putBucketWebsiteInput{
- RedirectAllRequestsTo: input.RedirectAllRequestsTo,
- IndexDocument: input.IndexDocument,
- ErrorDocument: input.ErrorDocument,
- }
- if input.RoutingRules != nil {
- body.RoutingRules = input.RoutingRules.Rules
- }
- data, contentMD5, err := marshalInput("PutBucketWebsiteInput", body)
- if err != nil {
- return nil, err
- }
- res, err := cli.newBuilder(input.Bucket, "").
- WithQuery("website", "").
- WithHeader(HeaderContentMD5, contentMD5).
- WithRetry(OnRetryFromStart, StatusCodeClassifier{}).
- Request(ctx, http.MethodPut, bytes.NewReader(data), cli.roundTripper(http.StatusOK))
- if err != nil {
- return nil, err
- }
- defer res.Close()
- output := PutBucketWebsiteOutput{RequestInfo: res.RequestInfo()}
- return &output, nil
- }
- func (cli *ClientV2) GetBucketWebsite(ctx context.Context, input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
- if input == nil {
- return nil, InputIsNilClientError
- }
- if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
- return nil, err
- }
- res, err := cli.newBuilder(input.Bucket, "").
- WithQuery("website", "").
- WithRetry(nil, StatusCodeClassifier{}).
- Request(ctx, http.MethodGet, nil, cli.roundTripper(http.StatusOK))
- if err != nil {
- return nil, err
- }
- defer res.Close()
- output := GetBucketWebsiteOutput{RequestInfo: res.RequestInfo()}
- if err = marshalOutput(output.RequestID, res.Body, &output); err != nil {
- return nil, err
- }
- return &output, nil
- }
- func (cli *ClientV2) DeleteBucketWebsite(ctx context.Context, input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
- if input == nil {
- return nil, InputIsNilClientError
- }
- if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
- return nil, err
- }
- res, err := cli.newBuilder(input.Bucket, "").
- WithQuery("website", "").
- WithRetry(nil, StatusCodeClassifier{}).
- Request(ctx, http.MethodDelete, nil, cli.roundTripper(http.StatusNoContent))
- if err != nil {
- return nil, err
- }
- defer res.Close()
- output := DeleteBucketWebsiteOutput{RequestInfo: res.RequestInfo()}
- return &output, nil
- }
|