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 }