versioning.go 941 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package tos
  2. import (
  3. "context"
  4. "net/http"
  5. )
  6. const (
  7. BucketVersioningEnable = "Enabled"
  8. BucketVersioningSuspended = "Suspended"
  9. )
  10. type GetBucketVersioningOutput struct {
  11. RequestInfo `json:"-"`
  12. Status string `json:"Status"`
  13. }
  14. // GetBucketVersioning get the multi-version status of a bucket
  15. func (cli *Client) GetBucketVersioning(ctx context.Context, bucket string) (*GetBucketVersioningOutput, error) {
  16. if err := isValidBucketName(bucket, cli.isCustomDomain); err != nil {
  17. return nil, err
  18. }
  19. res, err := cli.newBuilder(bucket, "").
  20. WithQuery("versioning", "").
  21. WithRetry(nil, StatusCodeClassifier{}).
  22. Request(ctx, http.MethodGet, nil, cli.roundTripper(http.StatusOK))
  23. if err != nil {
  24. return nil, err
  25. }
  26. defer res.Close()
  27. output := GetBucketVersioningOutput{RequestInfo: res.RequestInfo()}
  28. if err = marshalOutput(output.RequestID, res.Body, &output); err != nil {
  29. return nil, err
  30. }
  31. return &output, nil
  32. }