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 }