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 }