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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 列举授权策略列表
     4  package get_policies
     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  	Page        int64                           // 分页页号,从 1 开始,默认 1
    16  	PageSize    int64                           // 分页大小,默认 20,最大 2000
    17  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    18  }
    19  
    20  // 获取 API 所用的响应
    21  type Response struct {
    22  	Data GetPoliciesData // 授权策略信息
    23  }
    24  
    25  // 授权策略规则的操作集合
    26  type Actions = []string
    27  
    28  // 授权策略规则的资源集合
    29  type Resources = []string
    30  
    31  // 授权策略规则
    32  type Statement struct {
    33  	Actions   Actions   // 授权策略规则的操作集合
    34  	Resources Resources // 授权策略规则的资源集合
    35  	Effect    string    // 授权策略规则的生效类型,允许访问或拒绝访问
    36  }
    37  type jsonStatement struct {
    38  	Actions   Actions   `json:"action"`   // 授权策略规则的操作集合
    39  	Resources Resources `json:"resource"` // 授权策略规则的资源集合
    40  	Effect    string    `json:"effect"`   // 授权策略规则的生效类型,允许访问或拒绝访问
    41  }
    42  
    43  func (j *Statement) MarshalJSON() ([]byte, error) {
    44  	if err := j.validate(); err != nil {
    45  		return nil, err
    46  	}
    47  	return json.Marshal(&jsonStatement{Actions: j.Actions, Resources: j.Resources, Effect: j.Effect})
    48  }
    49  
    50  func (j *Statement) UnmarshalJSON(data []byte) error {
    51  	var nj jsonStatement
    52  	if err := json.Unmarshal(data, &nj); err != nil {
    53  		return err
    54  	}
    55  	j.Actions = nj.Actions
    56  	j.Resources = nj.Resources
    57  	j.Effect = nj.Effect
    58  	return nil
    59  }
    60  
    61  func (j *Statement) validate() error {
    62  	if len(j.Actions) == 0 {
    63  		return errors.MissingRequiredFieldError{Name: "Actions"}
    64  	}
    65  	if len(j.Resources) == 0 {
    66  		return errors.MissingRequiredFieldError{Name: "Resources"}
    67  	}
    68  	if j.Effect == "" {
    69  		return errors.MissingRequiredFieldError{Name: "Effect"}
    70  	}
    71  	return nil
    72  }
    73  
    74  // 授权策略规则集合
    75  type Statements = []Statement
    76  
    77  // 返回的授权策略
    78  type Policy struct {
    79  	Id          string     // 记录 ID
    80  	RootUid     int64      // 根用户 uid
    81  	Alias       string     // 授权策略别名
    82  	Description string     // 授权策略描述
    83  	Enabled     bool       // 授权策略是否启用
    84  	CreatedAt   string     // 授权策略创建时间
    85  	UpdatedAt   string     // 授权策略上次更新时间
    86  	Statement   Statements // 授权策略规则集合
    87  }
    88  type jsonPolicy struct {
    89  	Id          string     `json:"id"`          // 记录 ID
    90  	RootUid     int64      `json:"root_uid"`    // 根用户 uid
    91  	Alias       string     `json:"alias"`       // 授权策略别名
    92  	Description string     `json:"description"` // 授权策略描述
    93  	Enabled     bool       `json:"enabled"`     // 授权策略是否启用
    94  	CreatedAt   string     `json:"created_at"`  // 授权策略创建时间
    95  	UpdatedAt   string     `json:"updated_at"`  // 授权策略上次更新时间
    96  	Statement   Statements `json:"statement"`   // 授权策略规则集合
    97  }
    98  
    99  func (j *Policy) MarshalJSON() ([]byte, error) {
   100  	if err := j.validate(); err != nil {
   101  		return nil, err
   102  	}
   103  	return json.Marshal(&jsonPolicy{Id: j.Id, RootUid: j.RootUid, Alias: j.Alias, Description: j.Description, Enabled: j.Enabled, CreatedAt: j.CreatedAt, UpdatedAt: j.UpdatedAt, Statement: j.Statement})
   104  }
   105  
   106  func (j *Policy) UnmarshalJSON(data []byte) error {
   107  	var nj jsonPolicy
   108  	if err := json.Unmarshal(data, &nj); err != nil {
   109  		return err
   110  	}
   111  	j.Id = nj.Id
   112  	j.RootUid = nj.RootUid
   113  	j.Alias = nj.Alias
   114  	j.Description = nj.Description
   115  	j.Enabled = nj.Enabled
   116  	j.CreatedAt = nj.CreatedAt
   117  	j.UpdatedAt = nj.UpdatedAt
   118  	j.Statement = nj.Statement
   119  	return nil
   120  }
   121  
   122  func (j *Policy) validate() error {
   123  	if j.Id == "" {
   124  		return errors.MissingRequiredFieldError{Name: "Id"}
   125  	}
   126  	if j.RootUid == 0 {
   127  		return errors.MissingRequiredFieldError{Name: "RootUid"}
   128  	}
   129  	if j.Alias == "" {
   130  		return errors.MissingRequiredFieldError{Name: "Alias"}
   131  	}
   132  	if j.Description == "" {
   133  		return errors.MissingRequiredFieldError{Name: "Description"}
   134  	}
   135  	if j.CreatedAt == "" {
   136  		return errors.MissingRequiredFieldError{Name: "CreatedAt"}
   137  	}
   138  	if j.UpdatedAt == "" {
   139  		return errors.MissingRequiredFieldError{Name: "UpdatedAt"}
   140  	}
   141  	if len(j.Statement) == 0 {
   142  		return errors.MissingRequiredFieldError{Name: "Statement"}
   143  	}
   144  	for _, value := range j.Statement {
   145  		if err := value.validate(); err != nil {
   146  			return err
   147  		}
   148  	}
   149  	return nil
   150  }
   151  
   152  // 返回的授权策略列表
   153  type GetPolicies = []Policy
   154  
   155  // 授权策略信息
   156  type Data struct {
   157  	Count int64       // 授权策略数量
   158  	List  GetPolicies // 授权策略列表
   159  }
   160  
   161  // 返回的授权策略列表信息
   162  type (
   163  	GetPoliciesData = Data
   164  	jsonData        struct {
   165  		Count int64       `json:"count"` // 授权策略数量
   166  		List  GetPolicies `json:"list"`  // 授权策略列表
   167  	}
   168  )
   169  
   170  func (j *Data) MarshalJSON() ([]byte, error) {
   171  	if err := j.validate(); err != nil {
   172  		return nil, err
   173  	}
   174  	return json.Marshal(&jsonData{Count: j.Count, List: j.List})
   175  }
   176  
   177  func (j *Data) UnmarshalJSON(data []byte) error {
   178  	var nj jsonData
   179  	if err := json.Unmarshal(data, &nj); err != nil {
   180  		return err
   181  	}
   182  	j.Count = nj.Count
   183  	j.List = nj.List
   184  	return nil
   185  }
   186  
   187  func (j *Data) validate() error {
   188  	if j.Count == 0 {
   189  		return errors.MissingRequiredFieldError{Name: "Count"}
   190  	}
   191  	if len(j.List) == 0 {
   192  		return errors.MissingRequiredFieldError{Name: "List"}
   193  	}
   194  	for _, value := range j.List {
   195  		if err := value.validate(); err != nil {
   196  			return err
   197  		}
   198  	}
   199  	return nil
   200  }
   201  
   202  // 返回的授权策略列表响应
   203  type (
   204  	GetPoliciesResp = Response
   205  	jsonResponse    struct {
   206  		Data GetPoliciesData `json:"data"` // 授权策略信息
   207  	}
   208  )
   209  
   210  func (j *Response) MarshalJSON() ([]byte, error) {
   211  	if err := j.validate(); err != nil {
   212  		return nil, err
   213  	}
   214  	return json.Marshal(&jsonResponse{Data: j.Data})
   215  }
   216  
   217  func (j *Response) UnmarshalJSON(data []byte) error {
   218  	var nj jsonResponse
   219  	if err := json.Unmarshal(data, &nj); err != nil {
   220  		return err
   221  	}
   222  	j.Data = nj.Data
   223  	return nil
   224  }
   225  
   226  func (j *Response) validate() error {
   227  	if err := j.Data.validate(); err != nil {
   228  		return err
   229  	}
   230  	return nil
   231  }