代码拉取完成,页面将自动刷新
package transformers
import (
"context"
"reflect"
reflectx "gitee.com/go-genie/xx/reflect"
"gitee.com/go-genie/httptransport/validator"
typesx "gitee.com/go-genie/xx/types"
)
type FlattenParams struct {
Parameters []RequestParameter
}
type TransformerAndOption struct {
Transformer
Option TransformerOption
}
func (FlattenParams) NewValidator(ctx context.Context, typ typesx.Type) (validator.Validator, error) {
p := &FlattenParams{}
err := p.CollectParams(ctx, typ)
return p, err
}
func (FlattenParams) String() string {
return "@flatten"
}
func (params *FlattenParams) Validate(v interface{}) error {
rv, ok := v.(reflect.Value)
if !ok {
rv = reflect.ValueOf(v)
}
errSet := validator.NewErrorSet()
rv = reflectx.Indirect(rv)
for i := range params.Parameters {
p := params.Parameters[i]
fieldValue := p.FieldValue(rv)
if p.Validator != nil {
if err := p.Validator.Validate(fieldValue); err != nil {
errSet.AddErr(err, p.Name)
}
}
}
return errSet.Err()
}
func (params *FlattenParams) CollectParams(ctx context.Context, typ typesx.Type) error {
err := EachRequestParameter(
ctx, typesx.Deref(typ), func(rp *RequestParameter) {
params.Parameters = append(params.Parameters, *rp)
},
)
return err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。