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

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