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

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