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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 获取用户所有存储空间信息
     4  package get_bucket_infos
     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  	Statistics  bool                            // 是否返回存储空间的实时统计信息
    17  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    18  }
    19  
    20  // 获取 API 所用的响应
    21  type Response struct {
    22  	AllBucketInfosV2 AllBucketInfosV2 // 所有存储空间信息
    23  }
    24  
    25  // 防盗链 Referer 白名单
    26  type AllowedReferer = []string
    27  
    28  // 防盗链 Referer 黑名单
    29  type (
    30  	BlockedReferer = []string
    31  	BucketInfo     struct {
    32  		Source         string            // 镜像回源地址,可以有多个,以 `;` 分隔
    33  		Host           string            // 请求镜像地址时携带的 `Host` 头部
    34  		Expires        int64             // 镜像回源地址过期时长
    35  		Protected      int64             // 是否开启了原图保护
    36  		Private        int64             // 是否是私有空间
    37  		NoIndexPage    int64             // 是否禁用 index.html(或 index.htm) 页面
    38  		MaxAge         int64             // 客户端缓存过期时长
    39  		Separator      string            // 图片样式分隔符,可能返回多个
    40  		Styles         map[string]string // 图片样式,键表示图片样式命令名字,值表示图片样式命令内容
    41  		AntiLeechMode  int64             // 防盗链模式,1:表示设置 Referer 白名单; 2:表示设置 Referer 黑名单
    42  		TokenAntiLeech int64             // Token 防盗链模式, 0:表示关闭,1:表示打开
    43  		ReferWl        AllowedReferer    // 防盗链 Referer 白名单列表
    44  		ReferBl        BlockedReferer    // 防盗链 Referer 黑名单列表
    45  		SourceEnabled  bool              // 在源站支持的情况下是否开启源站的 Referer 防盗链
    46  		NoReferer      bool              // 0:表示不允许空 Refer 访问; 1:表示允许空 Refer 访问
    47  		MacKey         string            // 第一个 MacKey,Index 为 1,用于防盗链 Token 的生成
    48  		MacKey2        string            // 第二个 MacKey,Index 为 2,用于防盗链 Token 的生成
    49  		Zone           string            // 存储区域,兼容保留
    50  		Region         string            // 存储区域
    51  		Remark         string            // 空间备注信息
    52  		CreatedAt      string            // 空间创建时间
    53  	}
    54  )
    55  
    56  // 存储空间信息
    57  type (
    58  	BucketInfoV2   = BucketInfo
    59  	jsonBucketInfo struct {
    60  		Source         string            `json:"source"`                // 镜像回源地址,可以有多个,以 `;` 分隔
    61  		Host           string            `json:"host"`                  // 请求镜像地址时携带的 `Host` 头部
    62  		Expires        int64             `json:"expires"`               // 镜像回源地址过期时长
    63  		Protected      int64             `json:"protected"`             // 是否开启了原图保护
    64  		Private        int64             `json:"private"`               // 是否是私有空间
    65  		NoIndexPage    int64             `json:"no_index_page"`         // 是否禁用 index.html(或 index.htm) 页面
    66  		MaxAge         int64             `json:"max_age"`               // 客户端缓存过期时长
    67  		Separator      string            `json:"separator"`             // 图片样式分隔符,可能返回多个
    68  		Styles         map[string]string `json:"styles"`                // 图片样式,键表示图片样式命令名字,值表示图片样式命令内容
    69  		AntiLeechMode  int64             `json:"anti_leech_mode"`       // 防盗链模式,1:表示设置 Referer 白名单; 2:表示设置 Referer 黑名单
    70  		TokenAntiLeech int64             `json:"token_anti_leech_mode"` // Token 防盗链模式, 0:表示关闭,1:表示打开
    71  		ReferWl        AllowedReferer    `json:"refer_wl"`              // 防盗链 Referer 白名单列表
    72  		ReferBl        BlockedReferer    `json:"refer_bl"`              // 防盗链 Referer 黑名单列表
    73  		SourceEnabled  bool              `json:"source_enabled"`        // 在源站支持的情况下是否开启源站的 Referer 防盗链
    74  		NoReferer      bool              `json:"allow_empty_referer"`   // 0:表示不允许空 Refer 访问; 1:表示允许空 Refer 访问
    75  		MacKey         string            `json:"mac_key"`               // 第一个 MacKey,Index 为 1,用于防盗链 Token 的生成
    76  		MacKey2        string            `json:"mac_key2"`              // 第二个 MacKey,Index 为 2,用于防盗链 Token 的生成
    77  		Zone           string            `json:"zone"`                  // 存储区域,兼容保留
    78  		Region         string            `json:"region"`                // 存储区域
    79  		Remark         string            `json:"remark"`                // 空间备注信息
    80  		CreatedAt      string            `json:"ctime"`                 // 空间创建时间
    81  	}
    82  )
    83  
    84  func (j *BucketInfo) MarshalJSON() ([]byte, error) {
    85  	if err := j.validate(); err != nil {
    86  		return nil, err
    87  	}
    88  	return json.Marshal(&jsonBucketInfo{Source: j.Source, Host: j.Host, Expires: j.Expires, Protected: j.Protected, Private: j.Private, NoIndexPage: j.NoIndexPage, MaxAge: j.MaxAge, Separator: j.Separator, Styles: j.Styles, AntiLeechMode: j.AntiLeechMode, TokenAntiLeech: j.TokenAntiLeech, ReferWl: j.ReferWl, ReferBl: j.ReferBl, SourceEnabled: j.SourceEnabled, NoReferer: j.NoReferer, MacKey: j.MacKey, MacKey2: j.MacKey2, Zone: j.Zone, Region: j.Region, Remark: j.Remark, CreatedAt: j.CreatedAt})
    89  }
    90  
    91  func (j *BucketInfo) UnmarshalJSON(data []byte) error {
    92  	var nj jsonBucketInfo
    93  	if err := json.Unmarshal(data, &nj); err != nil {
    94  		return err
    95  	}
    96  	j.Source = nj.Source
    97  	j.Host = nj.Host
    98  	j.Expires = nj.Expires
    99  	j.Protected = nj.Protected
   100  	j.Private = nj.Private
   101  	j.NoIndexPage = nj.NoIndexPage
   102  	j.MaxAge = nj.MaxAge
   103  	j.Separator = nj.Separator
   104  	j.Styles = nj.Styles
   105  	j.AntiLeechMode = nj.AntiLeechMode
   106  	j.TokenAntiLeech = nj.TokenAntiLeech
   107  	j.ReferWl = nj.ReferWl
   108  	j.ReferBl = nj.ReferBl
   109  	j.SourceEnabled = nj.SourceEnabled
   110  	j.NoReferer = nj.NoReferer
   111  	j.MacKey = nj.MacKey
   112  	j.MacKey2 = nj.MacKey2
   113  	j.Zone = nj.Zone
   114  	j.Region = nj.Region
   115  	j.Remark = nj.Remark
   116  	j.CreatedAt = nj.CreatedAt
   117  	return nil
   118  }
   119  
   120  func (j *BucketInfo) validate() error {
   121  	if j.Source == "" {
   122  		return errors.MissingRequiredFieldError{Name: "Source"}
   123  	}
   124  	if j.Host == "" {
   125  		return errors.MissingRequiredFieldError{Name: "Host"}
   126  	}
   127  	if j.Expires == 0 {
   128  		return errors.MissingRequiredFieldError{Name: "Expires"}
   129  	}
   130  	if j.Protected == 0 {
   131  		return errors.MissingRequiredFieldError{Name: "Protected"}
   132  	}
   133  	if j.Private == 0 {
   134  		return errors.MissingRequiredFieldError{Name: "Private"}
   135  	}
   136  	if j.NoIndexPage == 0 {
   137  		return errors.MissingRequiredFieldError{Name: "NoIndexPage"}
   138  	}
   139  	if j.MaxAge == 0 {
   140  		return errors.MissingRequiredFieldError{Name: "MaxAge"}
   141  	}
   142  	if j.Separator == "" {
   143  		return errors.MissingRequiredFieldError{Name: "Separator"}
   144  	}
   145  	if j.Styles == nil {
   146  		return errors.MissingRequiredFieldError{Name: "Styles"}
   147  	}
   148  	if j.AntiLeechMode == 0 {
   149  		return errors.MissingRequiredFieldError{Name: "AntiLeechMode"}
   150  	}
   151  	if j.TokenAntiLeech == 0 {
   152  		return errors.MissingRequiredFieldError{Name: "TokenAntiLeech"}
   153  	}
   154  	if len(j.ReferWl) == 0 {
   155  		return errors.MissingRequiredFieldError{Name: "ReferWl"}
   156  	}
   157  	if len(j.ReferBl) == 0 {
   158  		return errors.MissingRequiredFieldError{Name: "ReferBl"}
   159  	}
   160  	if j.MacKey == "" {
   161  		return errors.MissingRequiredFieldError{Name: "MacKey"}
   162  	}
   163  	if j.MacKey2 == "" {
   164  		return errors.MissingRequiredFieldError{Name: "MacKey2"}
   165  	}
   166  	if j.Zone == "" {
   167  		return errors.MissingRequiredFieldError{Name: "Zone"}
   168  	}
   169  	if j.Region == "" {
   170  		return errors.MissingRequiredFieldError{Name: "Region"}
   171  	}
   172  	if j.Remark == "" {
   173  		return errors.MissingRequiredFieldError{Name: "Remark"}
   174  	}
   175  	if j.CreatedAt == "" {
   176  		return errors.MissingRequiredFieldError{Name: "CreatedAt"}
   177  	}
   178  	return nil
   179  }
   180  
   181  // 所有存储空间信息
   182  type BucketInfosV2 struct {
   183  	Name       string // 存储空间名称
   184  	BucketInfo BucketInfoV2
   185  }
   186  type jsonBucketInfosV2 struct {
   187  	Name       string       `json:"name"` // 存储空间名称
   188  	BucketInfo BucketInfoV2 `json:"info"`
   189  }
   190  
   191  func (j *BucketInfosV2) MarshalJSON() ([]byte, error) {
   192  	if err := j.validate(); err != nil {
   193  		return nil, err
   194  	}
   195  	return json.Marshal(&jsonBucketInfosV2{Name: j.Name, BucketInfo: j.BucketInfo})
   196  }
   197  
   198  func (j *BucketInfosV2) UnmarshalJSON(data []byte) error {
   199  	var nj jsonBucketInfosV2
   200  	if err := json.Unmarshal(data, &nj); err != nil {
   201  		return err
   202  	}
   203  	j.Name = nj.Name
   204  	j.BucketInfo = nj.BucketInfo
   205  	return nil
   206  }
   207  
   208  func (j *BucketInfosV2) validate() error {
   209  	if j.Name == "" {
   210  		return errors.MissingRequiredFieldError{Name: "Name"}
   211  	}
   212  	if err := j.BucketInfo.validate(); err != nil {
   213  		return err
   214  	}
   215  	return nil
   216  }
   217  
   218  // 所有存储空间信息
   219  type AllBucketInfosV2 []BucketInfosV2
   220  
   221  func (j *Response) MarshalJSON() ([]byte, error) {
   222  	return json.Marshal(j.AllBucketInfosV2)
   223  }
   224  
   225  func (j *Response) UnmarshalJSON(data []byte) error {
   226  	var array AllBucketInfosV2
   227  	if err := json.Unmarshal(data, &array); err != nil {
   228  		return err
   229  	}
   230  	j.AllBucketInfosV2 = array
   231  	return nil
   232  }