notification.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package tos
  2. import (
  3. "bytes"
  4. "context"
  5. "net/http"
  6. )
  7. func (cli *ClientV2) PutBucketNotification(ctx context.Context, input *PutBucketNotificationInput) (*PutBucketNotificationOutput, 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. data, contentMD5, err := marshalInput("PutBucketNotification", putBucketNotificationInput{CloudFunctionConfigurations: input.CloudFunctionConfigurations, RocketMQConfigurations: input.RocketMQConfigurations})
  15. if err != nil {
  16. return nil, err
  17. }
  18. res, err := cli.newBuilder(input.Bucket, "").
  19. WithQuery("notification", "").
  20. WithHeader(HeaderContentMD5, contentMD5).
  21. WithRetry(OnRetryFromStart, StatusCodeClassifier{}).
  22. Request(ctx, http.MethodPut, bytes.NewReader(data), cli.roundTripper(http.StatusOK))
  23. if err != nil {
  24. return nil, err
  25. }
  26. defer res.Close()
  27. output := PutBucketNotificationOutput{RequestInfo: res.RequestInfo()}
  28. return &output, nil
  29. }
  30. func (cli *ClientV2) GetBucketNotification(ctx context.Context, input *GetBucketNotificationInput) (*GetBucketNotificationOutput, error) {
  31. if input == nil {
  32. return nil, InputIsNilClientError
  33. }
  34. if err := isValidBucketName(input.Bucket, cli.isCustomDomain); err != nil {
  35. return nil, err
  36. }
  37. res, err := cli.newBuilder(input.Bucket, "").
  38. WithQuery("notification", "").
  39. WithRetry(nil, StatusCodeClassifier{}).
  40. Request(ctx, http.MethodGet, nil, cli.roundTripper(http.StatusOK))
  41. if err != nil {
  42. return nil, err
  43. }
  44. defer res.Close()
  45. output := GetBucketNotificationOutput{RequestInfo: res.RequestInfo()}
  46. if err = marshalOutput(output.RequestID, res.Body, &output); err != nil {
  47. return nil, err
  48. }
  49. return &output, nil
  50. }