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

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  // 查询指定授权策略详情
     4  package get_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  }
    18  
    19  // 获取 API 所用的响应
    20  type Response struct {
    21  	Data GetPolicyData // 授权策略信息
    22  }
    23  
    24  // 授权策略规则的操作集合
    25  type Actions = []string
    26  
    27  // 授权策略规则的资源集合
    28  type Resources = []string
    29  
    30  // 授权策略规则
    31  type Statement struct {
    32  	Actions   Actions   // 授权策略规则的操作集合
    33  	Resources Resources // 授权策略规则的资源集合
    34  	Effect    string    // 授权策略规则的生效类型,允许访问或拒绝访问
    35  }
    36  type jsonStatement struct {
    37  	Actions   Actions   `json:"action"`   // 授权策略规则的操作集合
    38  	Resources Resources `json:"resource"` // 授权策略规则的资源集合
    39  	Effect    string    `json:"effect"`   // 授权策略规则的生效类型,允许访问或拒绝访问
    40  }
    41  
    42  func (j *Statement) MarshalJSON() ([]byte, error) {
    43  	if err := j.validate(); err != nil {
    44  		return nil, err
    45  	}
    46  	return json.Marshal(&jsonStatement{Actions: j.Actions, Resources: j.Resources, Effect: j.Effect})
    47  }
    48  
    49  func (j *Statement) UnmarshalJSON(data []byte) error {
    50  	var nj jsonStatement
    51  	if err := json.Unmarshal(data, &nj); err != nil {
    52  		return err
    53  	}
    54  	j.Actions = nj.Actions
    55  	j.Resources = nj.Resources
    56  	j.Effect = nj.Effect
    57  	return nil
    58  }
    59  
    60  func (j *Statement) validate() error {
    61  	if len(j.Actions) == 0 {
    62  		return errors.MissingRequiredFieldError{Name: "Actions"}
    63  	}
    64  	if len(j.Resources) == 0 {
    65  		return errors.MissingRequiredFieldError{Name: "Resources"}
    66  	}
    67  	if j.Effect == "" {
    68  		return errors.MissingRequiredFieldError{Name: "Effect"}
    69  	}
    70  	return nil
    71  }
    72  
    73  // 授权策略规则集合
    74  type Statements = []Statement
    75  
    76  // 授权策略信息
    77  type Data struct {
    78  	Id          string     // 记录 ID
    79  	RootUid     int64      // 根用户 uid
    80  	Alias       string     // 授权策略别名
    81  	Description string     // 授权策略描述
    82  	Enabled     bool       // 授权策略是否启用
    83  	CreatedAt   string     // 授权策略创建时间
    84  	UpdatedAt   string     // 授权策略上次更新时间
    85  	Statement   Statements // 授权策略规则集合
    86  }
    87  
    88  // 返回的授权策略信息
    89  type (
    90  	GetPolicyData = Data
    91  	jsonData      struct {
    92  		Id          string     `json:"id"`          // 记录 ID
    93  		RootUid     int64      `json:"root_uid"`    // 根用户 uid
    94  		Alias       string     `json:"alias"`       // 授权策略别名
    95  		Description string     `json:"description"` // 授权策略描述
    96  		Enabled     bool       `json:"enabled"`     // 授权策略是否启用
    97  		CreatedAt   string     `json:"created_at"`  // 授权策略创建时间
    98  		UpdatedAt   string     `json:"updated_at"`  // 授权策略上次更新时间
    99  		Statement   Statements `json:"statement"`   // 授权策略规则集合
   100  	}
   101  )
   102  
   103  func (j *Data) MarshalJSON() ([]byte, error) {
   104  	if err := j.validate(); err != nil {
   105  		return nil, err
   106  	}
   107  	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})
   108  }
   109  
   110  func (j *Data) UnmarshalJSON(data []byte) error {
   111  	var nj jsonData
   112  	if err := json.Unmarshal(data, &nj); err != nil {
   113  		return err
   114  	}
   115  	j.Id = nj.Id
   116  	j.RootUid = nj.RootUid
   117  	j.Alias = nj.Alias
   118  	j.Description = nj.Description
   119  	j.Enabled = nj.Enabled
   120  	j.CreatedAt = nj.CreatedAt
   121  	j.UpdatedAt = nj.UpdatedAt
   122  	j.Statement = nj.Statement
   123  	return nil
   124  }
   125  
   126  func (j *Data) validate() error {
   127  	if j.Id == "" {
   128  		return errors.MissingRequiredFieldError{Name: "Id"}
   129  	}
   130  	if j.RootUid == 0 {
   131  		return errors.MissingRequiredFieldError{Name: "RootUid"}
   132  	}
   133  	if j.Alias == "" {
   134  		return errors.MissingRequiredFieldError{Name: "Alias"}
   135  	}
   136  	if j.Description == "" {
   137  		return errors.MissingRequiredFieldError{Name: "Description"}
   138  	}
   139  	if j.CreatedAt == "" {
   140  		return errors.MissingRequiredFieldError{Name: "CreatedAt"}
   141  	}
   142  	if j.UpdatedAt == "" {
   143  		return errors.MissingRequiredFieldError{Name: "UpdatedAt"}
   144  	}
   145  	if len(j.Statement) == 0 {
   146  		return errors.MissingRequiredFieldError{Name: "Statement"}
   147  	}
   148  	for _, value := range j.Statement {
   149  		if err := value.validate(); err != nil {
   150  			return err
   151  		}
   152  	}
   153  	return nil
   154  }
   155  
   156  // 返回的授权策略响应
   157  type (
   158  	GetPolicyResp = Response
   159  	jsonResponse  struct {
   160  		Data GetPolicyData `json:"data"` // 授权策略信息
   161  	}
   162  )
   163  
   164  func (j *Response) MarshalJSON() ([]byte, error) {
   165  	if err := j.validate(); err != nil {
   166  		return nil, err
   167  	}
   168  	return json.Marshal(&jsonResponse{Data: j.Data})
   169  }
   170  
   171  func (j *Response) UnmarshalJSON(data []byte) error {
   172  	var nj jsonResponse
   173  	if err := json.Unmarshal(data, &nj); err != nil {
   174  		return err
   175  	}
   176  	j.Data = nj.Data
   177  	return nil
   178  }
   179  
   180  func (j *Response) validate() error {
   181  	if err := j.Data.validate(); err != nil {
   182  		return err
   183  	}
   184  	return nil
   185  }