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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 修改授权策略
     4  package modify_policy
     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  	Credentials credentials.CredentialsProvider // 鉴权参数,用于生成鉴权凭证,如果为空,则使用 HTTPClientOptions 中的 CredentialsProvider
    17  	NewAlias    string                          // 授权策略别名,由 `A-Za-z0-9` 组成
    18  	Description string                          // 授权策略描述
    19  	Statement   ModifyStatements                // 授权策略规则集合
    20  }
    21  
    22  // 授权策略规则的操作集合
    23  type ModifyActions = []string
    24  
    25  // 授权策略规则的资源集合
    26  type ModifyResources = []string
    27  
    28  // 授权策略规则
    29  type ModifyStatement struct {
    30  	Actions   ModifyActions   // 授权策略规则的操作集合,action 查询参考 action 接口,格式为 service/action_alias
    31  	Resources ModifyResources // 授权策略规则的资源集合,格式为 qrn:product:region:uid:[resource-type/]resource-id ;可以简写为 qrn:product:::resource-id
    32  	Effect    string          // 授权策略规则的生效类型,允许访问或拒绝访问
    33  }
    34  type jsonModifyStatement struct {
    35  	Actions   ModifyActions   `json:"action"`   // 授权策略规则的操作集合,action 查询参考 action 接口,格式为 service/action_alias
    36  	Resources ModifyResources `json:"resource"` // 授权策略规则的资源集合,格式为 qrn:product:region:uid:[resource-type/]resource-id ;可以简写为 qrn:product:::resource-id
    37  	Effect    string          `json:"effect"`   // 授权策略规则的生效类型,允许访问或拒绝访问
    38  }
    39  
    40  func (j *ModifyStatement) MarshalJSON() ([]byte, error) {
    41  	if err := j.validate(); err != nil {
    42  		return nil, err
    43  	}
    44  	return json.Marshal(&jsonModifyStatement{Actions: j.Actions, Resources: j.Resources, Effect: j.Effect})
    45  }
    46  
    47  func (j *ModifyStatement) UnmarshalJSON(data []byte) error {
    48  	var nj jsonModifyStatement
    49  	if err := json.Unmarshal(data, &nj); err != nil {
    50  		return err
    51  	}
    52  	j.Actions = nj.Actions
    53  	j.Resources = nj.Resources
    54  	j.Effect = nj.Effect
    55  	return nil
    56  }
    57  
    58  func (j *ModifyStatement) validate() error {
    59  	if len(j.Actions) == 0 {
    60  		return errors.MissingRequiredFieldError{Name: "Actions"}
    61  	}
    62  	if len(j.Resources) == 0 {
    63  		return errors.MissingRequiredFieldError{Name: "Resources"}
    64  	}
    65  	if j.Effect == "" {
    66  		return errors.MissingRequiredFieldError{Name: "Effect"}
    67  	}
    68  	return nil
    69  }
    70  
    71  // 授权策略规则集合
    72  type ModifyStatements = []ModifyStatement
    73  
    74  // 修改授权策略参数
    75  type (
    76  	ModifyPolicyParam = Request
    77  	jsonRequest       struct {
    78  		NewAlias    string           `json:"alias,omitempty"`       // 授权策略别名,由 `A-Za-z0-9` 组成
    79  		Description string           `json:"description,omitempty"` // 授权策略描述
    80  		Statement   ModifyStatements `json:"statement,omitempty"`   // 授权策略规则集合
    81  	}
    82  )
    83  
    84  func (j *Request) MarshalJSON() ([]byte, error) {
    85  	if err := j.validate(); err != nil {
    86  		return nil, err
    87  	}
    88  	return json.Marshal(&jsonRequest{NewAlias: j.NewAlias, Description: j.Description, Statement: j.Statement})
    89  }
    90  
    91  func (j *Request) UnmarshalJSON(data []byte) error {
    92  	var nj jsonRequest
    93  	if err := json.Unmarshal(data, &nj); err != nil {
    94  		return err
    95  	}
    96  	j.NewAlias = nj.NewAlias
    97  	j.Description = nj.Description
    98  	j.Statement = nj.Statement
    99  	return nil
   100  }
   101  
   102  func (j *Request) validate() error {
   103  	return nil
   104  }
   105  
   106  // 获取 API 所用的响应
   107  type Response struct {
   108  	Data ModifiedPolicyData // 授权策略信息
   109  }
   110  
   111  // 授权策略规则的操作集合
   112  type ModifiedActions = []string
   113  
   114  // 授权策略规则的资源集合
   115  type ModifiedResources = []string
   116  
   117  // 授权策略规则
   118  type ModifiedStatement struct {
   119  	Actions   ModifiedActions   // 授权策略规则的操作集合
   120  	Resources ModifiedResources // 授权策略规则的资源集合
   121  	Effect    string            // 授权策略规则的生效类型,允许访问或拒绝访问
   122  }
   123  type jsonModifiedStatement struct {
   124  	Actions   ModifiedActions   `json:"action"`   // 授权策略规则的操作集合
   125  	Resources ModifiedResources `json:"resource"` // 授权策略规则的资源集合
   126  	Effect    string            `json:"effect"`   // 授权策略规则的生效类型,允许访问或拒绝访问
   127  }
   128  
   129  func (j *ModifiedStatement) MarshalJSON() ([]byte, error) {
   130  	if err := j.validate(); err != nil {
   131  		return nil, err
   132  	}
   133  	return json.Marshal(&jsonModifiedStatement{Actions: j.Actions, Resources: j.Resources, Effect: j.Effect})
   134  }
   135  
   136  func (j *ModifiedStatement) UnmarshalJSON(data []byte) error {
   137  	var nj jsonModifiedStatement
   138  	if err := json.Unmarshal(data, &nj); err != nil {
   139  		return err
   140  	}
   141  	j.Actions = nj.Actions
   142  	j.Resources = nj.Resources
   143  	j.Effect = nj.Effect
   144  	return nil
   145  }
   146  
   147  func (j *ModifiedStatement) validate() error {
   148  	if len(j.Actions) == 0 {
   149  		return errors.MissingRequiredFieldError{Name: "Actions"}
   150  	}
   151  	if len(j.Resources) == 0 {
   152  		return errors.MissingRequiredFieldError{Name: "Resources"}
   153  	}
   154  	if j.Effect == "" {
   155  		return errors.MissingRequiredFieldError{Name: "Effect"}
   156  	}
   157  	return nil
   158  }
   159  
   160  // 授权策略规则集合
   161  type ModifiedStatements = []ModifiedStatement
   162  
   163  // 授权策略信息
   164  type Data struct {
   165  	Id          string             // 记录 ID
   166  	RootUid     int64              // 根用户 uid
   167  	Alias       string             // 授权策略别名
   168  	Description string             // 授权策略描述
   169  	Enabled     bool               // 授权策略是否启用
   170  	CreatedAt   string             // 授权策略创建时间
   171  	UpdatedAt   string             // 授权策略上次更新时间
   172  	Statement   ModifiedStatements // 授权策略规则集合
   173  }
   174  
   175  // 返回的授权策略信息
   176  type (
   177  	ModifiedPolicyData = Data
   178  	jsonData           struct {
   179  		Id          string             `json:"id"`          // 记录 ID
   180  		RootUid     int64              `json:"root_uid"`    // 根用户 uid
   181  		Alias       string             `json:"alias"`       // 授权策略别名
   182  		Description string             `json:"description"` // 授权策略描述
   183  		Enabled     bool               `json:"enabled"`     // 授权策略是否启用
   184  		CreatedAt   string             `json:"created_at"`  // 授权策略创建时间
   185  		UpdatedAt   string             `json:"updated_at"`  // 授权策略上次更新时间
   186  		Statement   ModifiedStatements `json:"statement"`   // 授权策略规则集合
   187  	}
   188  )
   189  
   190  func (j *Data) MarshalJSON() ([]byte, error) {
   191  	if err := j.validate(); err != nil {
   192  		return nil, err
   193  	}
   194  	return json.Marshal(&jsonData{Id: j.Id, RootUid: j.RootUid, Alias: j.Alias, Description: j.Description, Enabled: j.Enabled, CreatedAt: j.CreatedAt, UpdatedAt: j.UpdatedAt, Statement: j.Statement})
   195  }
   196  
   197  func (j *Data) UnmarshalJSON(data []byte) error {
   198  	var nj jsonData
   199  	if err := json.Unmarshal(data, &nj); err != nil {
   200  		return err
   201  	}
   202  	j.Id = nj.Id
   203  	j.RootUid = nj.RootUid
   204  	j.Alias = nj.Alias
   205  	j.Description = nj.Description
   206  	j.Enabled = nj.Enabled
   207  	j.CreatedAt = nj.CreatedAt
   208  	j.UpdatedAt = nj.UpdatedAt
   209  	j.Statement = nj.Statement
   210  	return nil
   211  }
   212  
   213  func (j *Data) validate() error {
   214  	if j.Id == "" {
   215  		return errors.MissingRequiredFieldError{Name: "Id"}
   216  	}
   217  	if j.RootUid == 0 {
   218  		return errors.MissingRequiredFieldError{Name: "RootUid"}
   219  	}
   220  	if j.Alias == "" {
   221  		return errors.MissingRequiredFieldError{Name: "Alias"}
   222  	}
   223  	if j.Description == "" {
   224  		return errors.MissingRequiredFieldError{Name: "Description"}
   225  	}
   226  	if j.CreatedAt == "" {
   227  		return errors.MissingRequiredFieldError{Name: "CreatedAt"}
   228  	}
   229  	if j.UpdatedAt == "" {
   230  		return errors.MissingRequiredFieldError{Name: "UpdatedAt"}
   231  	}
   232  	if len(j.Statement) == 0 {
   233  		return errors.MissingRequiredFieldError{Name: "Statement"}
   234  	}
   235  	for _, value := range j.Statement {
   236  		if err := value.validate(); err != nil {
   237  			return err
   238  		}
   239  	}
   240  	return nil
   241  }
   242  
   243  // 返回的授权策略响应
   244  type (
   245  	ModifiedPolicyResp = Response
   246  	jsonResponse       struct {
   247  		Data ModifiedPolicyData `json:"data"` // 授权策略信息
   248  	}
   249  )
   250  
   251  func (j *Response) MarshalJSON() ([]byte, error) {
   252  	if err := j.validate(); err != nil {
   253  		return nil, err
   254  	}
   255  	return json.Marshal(&jsonResponse{Data: j.Data})
   256  }
   257  
   258  func (j *Response) UnmarshalJSON(data []byte) error {
   259  	var nj jsonResponse
   260  	if err := json.Unmarshal(data, &nj); err != nil {
   261  		return err
   262  	}
   263  	j.Data = nj.Data
   264  	return nil
   265  }
   266  
   267  func (j *Response) validate() error {
   268  	if err := j.Data.validate(); err != nil {
   269  		return err
   270  	}
   271  	return nil
   272  }