package builtin import ( ctxpkg "github.com/noahlann/nnet/pkg/context" interceptorpkg "github.com/noahlann/nnet/pkg/interceptor" ) // ValidationInterceptor 验证拦截器 func ValidationInterceptor(validator func(data []byte, ctx ctxpkg.Context) error) interceptorpkg.Interceptor { return interceptorpkg.HandlerFunc(func(data []byte, ctx ctxpkg.Context, next interceptorpkg.Chain) ([]byte, bool, error) { if validator == nil { return next.Next(data, ctx) } if err := validator(data, ctx); err != nil { return nil, false, err } return next.Next(data, ctx) }) } // MinLengthInterceptor 最小长度验证拦截器 func MinLengthInterceptor(minLength int) interceptorpkg.Interceptor { return ValidationInterceptor(func(data []byte, ctx ctxpkg.Context) error { if len(data) < minLength { return interceptorpkg.New("data too short") } return nil }) } // MaxLengthInterceptor 最大长度验证拦截器 func MaxLengthInterceptor(maxLength int) interceptorpkg.Interceptor { return ValidationInterceptor(func(data []byte, ctx ctxpkg.Context) error { if len(data) > maxLength { return interceptorpkg.New("data too long") } return nil }) }