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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 获取存储空间事件通知规则
     4  package get_bucket_event_rules
     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  	BucketEventRules BucketEventRules // 所有存储空间事件通知规则
    22  }
    23  
    24  // 事件类型
    25  type EventTypes = []string
    26  
    27  // 回调地址
    28  type CallbackUrls = []string
    29  
    30  // 存储空间事件通知规则
    31  type BucketEventRule struct {
    32  	Name         string       // 规则名称,bucket 内唯一,长度小于 50,不能为空,只能为字母、数字、下划线
    33  	Prefix       string       // 匹配文件前缀
    34  	Suffix       string       // 匹配文件后缀
    35  	EventTypes   EventTypes   // 事件类型,可以指定多个,包括 put,mkfile,delete,copy,move,append,disable,enable,deleteMarkerCreate,predelete(删除之前触发),restore:completed
    36  	CallbackUrls CallbackUrls // 回调地址,可以指定多个
    37  	AccessKey    string       // 设置的话会对通知请求用对应的 accessKey,secretKey 进行签名
    38  	Host         string       // 通知请求的 Host
    39  }
    40  type jsonBucketEventRule struct {
    41  	Name         string       `json:"name"`                // 规则名称,bucket 内唯一,长度小于 50,不能为空,只能为字母、数字、下划线
    42  	Prefix       string       `json:"prefix,omitempty"`    // 匹配文件前缀
    43  	Suffix       string       `json:"suffix,omitempty"`    // 匹配文件后缀
    44  	EventTypes   EventTypes   `json:"event"`               // 事件类型,可以指定多个,包括 put,mkfile,delete,copy,move,append,disable,enable,deleteMarkerCreate,predelete(删除之前触发),restore:completed
    45  	CallbackUrls CallbackUrls `json:"callbackURL"`         // 回调地址,可以指定多个
    46  	AccessKey    string       `json:"accessKey,omitempty"` // 设置的话会对通知请求用对应的 accessKey,secretKey 进行签名
    47  	Host         string       `json:"host,omitempty"`      // 通知请求的 Host
    48  }
    49  
    50  func (j *BucketEventRule) MarshalJSON() ([]byte, error) {
    51  	if err := j.validate(); err != nil {
    52  		return nil, err
    53  	}
    54  	return json.Marshal(&jsonBucketEventRule{Name: j.Name, Prefix: j.Prefix, Suffix: j.Suffix, EventTypes: j.EventTypes, CallbackUrls: j.CallbackUrls, AccessKey: j.AccessKey, Host: j.Host})
    55  }
    56  
    57  func (j *BucketEventRule) UnmarshalJSON(data []byte) error {
    58  	var nj jsonBucketEventRule
    59  	if err := json.Unmarshal(data, &nj); err != nil {
    60  		return err
    61  	}
    62  	j.Name = nj.Name
    63  	j.Prefix = nj.Prefix
    64  	j.Suffix = nj.Suffix
    65  	j.EventTypes = nj.EventTypes
    66  	j.CallbackUrls = nj.CallbackUrls
    67  	j.AccessKey = nj.AccessKey
    68  	j.Host = nj.Host
    69  	return nil
    70  }
    71  
    72  func (j *BucketEventRule) validate() error {
    73  	if j.Name == "" {
    74  		return errors.MissingRequiredFieldError{Name: "Name"}
    75  	}
    76  	if len(j.EventTypes) == 0 {
    77  		return errors.MissingRequiredFieldError{Name: "EventTypes"}
    78  	}
    79  	if len(j.CallbackUrls) == 0 {
    80  		return errors.MissingRequiredFieldError{Name: "CallbackUrls"}
    81  	}
    82  	return nil
    83  }
    84  
    85  // 所有存储空间事件通知规则
    86  type BucketEventRules []BucketEventRule
    87  
    88  func (j *Response) MarshalJSON() ([]byte, error) {
    89  	return json.Marshal(j.BucketEventRules)
    90  }
    91  
    92  func (j *Response) UnmarshalJSON(data []byte) error {
    93  	var array BucketEventRules
    94  	if err := json.Unmarshal(data, &array); err != nil {
    95  		return err
    96  	}
    97  	j.BucketEventRules = array
    98  	return nil
    99  }