github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apis/get_buckets_v4/api.go (about)

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 获取拥有的所有存储空间列表
     4  package get_buckets_v4
     5  
     6  import (
     7  	"encoding/json"
     8  
     9  	credentials "github.com/qiniu/go-sdk/v7/storagev2/credentials"
    10  	errors "github.com/qiniu/go-sdk/v7/storagev2/errors"
    11  )
    12  
    13  // 调用 API 所用的请求
    14  type Request struct {
    15  	Region      string                          // 区域 ID
    16  	Limit       int64                           // 分页大小。默认20,取值范围 1~100。
    17  	Marker      string                          // 列举开始的空间标识
    18  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    19  }
    20  
    21  // 获取 API 所用的响应
    22  type Response struct {
    23  	NextMarker  string // 下一页开始的空间标识
    24  	IsTruncated bool   // 是否所有的结果都已经返回
    25  	Buckets     BucketsV4
    26  }
    27  
    28  // 存储空间信息
    29  type BucketV4 struct {
    30  	Name        string // 空间名称
    31  	Region      string // 空间区域 ID
    32  	Private     bool   // 空间是否私有
    33  	CreatedTime string // 空间创建时间
    34  }
    35  type jsonBucketV4 struct {
    36  	Name        string `json:"name"`    // 空间名称
    37  	Region      string `json:"region"`  // 空间区域 ID
    38  	Private     bool   `json:"private"` // 空间是否私有
    39  	CreatedTime string `json:"ctime"`   // 空间创建时间
    40  }
    41  
    42  func (j *BucketV4) MarshalJSON() ([]byte, error) {
    43  	if err := j.validate(); err != nil {
    44  		return nil, err
    45  	}
    46  	return json.Marshal(&jsonBucketV4{Name: j.Name, Region: j.Region, Private: j.Private, CreatedTime: j.CreatedTime})
    47  }
    48  
    49  func (j *BucketV4) UnmarshalJSON(data []byte) error {
    50  	var nj jsonBucketV4
    51  	if err := json.Unmarshal(data, &nj); err != nil {
    52  		return err
    53  	}
    54  	j.Name = nj.Name
    55  	j.Region = nj.Region
    56  	j.Private = nj.Private
    57  	j.CreatedTime = nj.CreatedTime
    58  	return nil
    59  }
    60  
    61  func (j *BucketV4) validate() error {
    62  	if j.Name == "" {
    63  		return errors.MissingRequiredFieldError{Name: "Name"}
    64  	}
    65  	if j.Region == "" {
    66  		return errors.MissingRequiredFieldError{Name: "Region"}
    67  	}
    68  	if j.CreatedTime == "" {
    69  		return errors.MissingRequiredFieldError{Name: "CreatedTime"}
    70  	}
    71  	return nil
    72  }
    73  
    74  // 存储空间列表
    75  type BucketsV4 = []BucketV4
    76  
    77  // 返回所有存储空间结果
    78  type (
    79  	BucketsResultV4 = Response
    80  	jsonResponse    struct {
    81  		NextMarker  string    `json:"next_marker"`  // 下一页开始的空间标识
    82  		IsTruncated bool      `json:"is_truncated"` // 是否所有的结果都已经返回
    83  		Buckets     BucketsV4 `json:"buckets"`
    84  	}
    85  )
    86  
    87  func (j *Response) MarshalJSON() ([]byte, error) {
    88  	if err := j.validate(); err != nil {
    89  		return nil, err
    90  	}
    91  	return json.Marshal(&jsonResponse{NextMarker: j.NextMarker, IsTruncated: j.IsTruncated, Buckets: j.Buckets})
    92  }
    93  
    94  func (j *Response) UnmarshalJSON(data []byte) error {
    95  	var nj jsonResponse
    96  	if err := json.Unmarshal(data, &nj); err != nil {
    97  		return err
    98  	}
    99  	j.NextMarker = nj.NextMarker
   100  	j.IsTruncated = nj.IsTruncated
   101  	j.Buckets = nj.Buckets
   102  	return nil
   103  }
   104  
   105  func (j *Response) validate() error {
   106  	if j.NextMarker == "" {
   107  		return errors.MissingRequiredFieldError{Name: "NextMarker"}
   108  	}
   109  	if len(j.Buckets) == 0 {
   110  		return errors.MissingRequiredFieldError{Name: "Buckets"}
   111  	}
   112  	for _, value := range j.Buckets {
   113  		if err := value.validate(); err != nil {
   114  			return err
   115  		}
   116  	}
   117  	return nil
   118  }