custom_domain.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package tos
  2. import (
  3. "bytes"
  4. "context"
  5. "net/http"
  6. )
  7. func (cli *ClientV2) PutBucketCustomDomain(ctx context.Context, input *PutBucketCustomDomainInput) (*PutBucketCustomDomainOutput, error) {
  8. if input == nil {
  9. return nil, InputIsNilClientError
  10. }
  11. if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
  12. return nil, err
  13. }
  14. body := putBucketCustomDomainInput{
  15. Rule: input.Rule,
  16. }
  17. data, contentMD5, err := marshalInput("PutBucketCustomDomainInput", body)
  18. if err != nil {
  19. return nil, err
  20. }
  21. res, err := cli.newBuilder(input.Bucket, "").
  22. WithQuery("customdomain", "").
  23. WithHeader(HeaderContentMD5, contentMD5).
  24. WithRetry(OnRetryFromStart, StatusCodeClassifier{}).
  25. Request(ctx, http.MethodPut, bytes.NewReader(data), cli.roundTripper(http.StatusOK))
  26. if err != nil {
  27. return nil, err
  28. }
  29. defer res.Close()
  30. output := PutBucketCustomDomainOutput{RequestInfo: res.RequestInfo()}
  31. return &output, nil
  32. }
  33. func (cli *ClientV2) ListBucketCustomDomain(ctx context.Context, input *ListBucketCustomDomainInput) (*ListBucketCustomDomainOutput, error) {
  34. if input == nil {
  35. return nil, InputIsNilClientError
  36. }
  37. if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
  38. return nil, err
  39. }
  40. res, err := cli.newBuilder(input.Bucket, "").
  41. WithQuery("customdomain", "").
  42. WithRetry(nil, StatusCodeClassifier{}).
  43. Request(ctx, http.MethodGet, nil, cli.roundTripper(http.StatusOK))
  44. if err != nil {
  45. return nil, err
  46. }
  47. defer res.Close()
  48. output := ListBucketCustomDomainOutput{RequestInfo: res.RequestInfo()}
  49. if err = marshalOutput(output.RequestID, res.Body, &output); err != nil {
  50. return nil, err
  51. }
  52. return &output, nil
  53. }
  54. func (cli *ClientV2) DeleteBucketCustomDomain(ctx context.Context, input *DeleteBucketCustomDomainInput) (*DeleteBucketCustomDomainOutput, error) {
  55. if input == nil {
  56. return nil, InputIsNilClientError
  57. }
  58. if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
  59. return nil, err
  60. }
  61. res, err := cli.newBuilder(input.Bucket, "").
  62. WithQuery("customdomain", input.Domain).
  63. WithRetry(nil, StatusCodeClassifier{}).
  64. Request(ctx, http.MethodDelete, nil, cli.roundTripper(http.StatusOK))
  65. if err != nil {
  66. return nil, err
  67. }
  68. defer res.Close()
  69. output := DeleteBucketCustomDomainOutput{RequestInfo: res.RequestInfo()}
  70. return &output, nil
  71. }