Compare commits
2 Commits
rpc/v0.0.1
...
rpc/v0.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
021a08eda3 | ||
|
|
937559d208 |
11
rpc/go.mod
11
rpc/go.mod
@@ -4,27 +4,23 @@ go 1.23.0
|
|||||||
|
|
||||||
toolchain go1.24.3
|
toolchain go1.24.3
|
||||||
|
|
||||||
replace (
|
replace github.com/tx7do/kratos-bootstrap/api => ../api
|
||||||
github.com/bufbuild/protovalidate-go => buf.build/go/protovalidate v0.10.1
|
|
||||||
|
|
||||||
github.com/tx7do/kratos-bootstrap/api => ../api
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
buf.build/go/protovalidate v0.14.0
|
||||||
github.com/go-kratos/aegis v0.2.0
|
github.com/go-kratos/aegis v0.2.0
|
||||||
github.com/go-kratos/kratos/contrib/middleware/validate/v2 v2.0.0-20250716060240-ac92cbe5701c
|
|
||||||
github.com/go-kratos/kratos/v2 v2.8.4
|
github.com/go-kratos/kratos/v2 v2.8.4
|
||||||
github.com/gorilla/handlers v1.5.2
|
github.com/gorilla/handlers v1.5.2
|
||||||
github.com/tx7do/kratos-bootstrap/api v0.0.27
|
github.com/tx7do/kratos-bootstrap/api v0.0.27
|
||||||
github.com/tx7do/kratos-bootstrap/utils v0.1.3
|
github.com/tx7do/kratos-bootstrap/utils v0.1.3
|
||||||
google.golang.org/grpc v1.73.0
|
google.golang.org/grpc v1.73.0
|
||||||
|
google.golang.org/protobuf v1.36.6
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1 // indirect
|
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1 // indirect
|
||||||
cel.dev/expr v0.24.0 // indirect
|
cel.dev/expr v0.24.0 // indirect
|
||||||
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
|
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
|
||||||
github.com/bufbuild/protovalidate-go v0.14.0 // indirect
|
|
||||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
github.com/go-logr/logr v1.4.3 // indirect
|
github.com/go-logr/logr v1.4.3 // indirect
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
@@ -52,6 +48,5 @@ require (
|
|||||||
golang.org/x/text v0.27.0 // indirect
|
golang.org/x/text v0.27.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 // indirect
|
google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79 // indirect
|
||||||
google.golang.org/protobuf v1.36.6 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1 h1:Lg6klmCi3v7VvpqeeLEER9/m5S8y9e9DjhqQnSCNy4k=
|
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1 h1:Lg6klmCi3v7VvpqeeLEER9/m5S8y9e9DjhqQnSCNy4k=
|
||||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
|
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250717185734-6c6e0d3c608e.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
|
||||||
buf.build/go/protovalidate v0.10.1 h1:2k9jAfLBLvzomB7yftRKUkpUi6Rb5TVPs5vyY+1TMYM=
|
buf.build/go/protovalidate v0.14.0 h1:kr/rC/no+DtRyYX+8KXLDxNnI1rINz0imk5K44ZpZ3A=
|
||||||
buf.build/go/protovalidate v0.10.1/go.mod h1:2NC0NSB6Lon4wR2wxisxDD6LnoJDPMB5i6BTLjD2Szw=
|
buf.build/go/protovalidate v0.14.0/go.mod h1:+F/oISho9MO7gJQNYC2VWLzcO1fTPmaTA08SDYJZncA=
|
||||||
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
|
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
|
||||||
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
|
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
|
||||||
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
|
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
|
||||||
@@ -20,8 +20,6 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2
|
|||||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
github.com/go-kratos/aegis v0.2.0 h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ=
|
github.com/go-kratos/aegis v0.2.0 h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ=
|
||||||
github.com/go-kratos/aegis v0.2.0/go.mod h1:v0R2m73WgEEYB3XYu6aE2WcMwsZkJ/Rzuf5eVccm7bI=
|
github.com/go-kratos/aegis v0.2.0/go.mod h1:v0R2m73WgEEYB3XYu6aE2WcMwsZkJ/Rzuf5eVccm7bI=
|
||||||
github.com/go-kratos/kratos/contrib/middleware/validate/v2 v2.0.0-20250716060240-ac92cbe5701c h1:PV001rIZ2P9Ei4RG8SUJYyKtC58JTn3gw1QULE0eYpQ=
|
|
||||||
github.com/go-kratos/kratos/contrib/middleware/validate/v2 v2.0.0-20250716060240-ac92cbe5701c/go.mod h1:NRPjykSmmscIXLP6Qv42b/UFhwZgxH9bD9OLgbMXMqs=
|
|
||||||
github.com/go-kratos/kratos/v2 v2.8.4 h1:eIJLE9Qq9WSoKx+Buy2uPyrahtF/lPh+Xf4MTpxhmjs=
|
github.com/go-kratos/kratos/v2 v2.8.4 h1:eIJLE9Qq9WSoKx+Buy2uPyrahtF/lPh+Xf4MTpxhmjs=
|
||||||
github.com/go-kratos/kratos/v2 v2.8.4/go.mod h1:mq62W2101a5uYyRxe+7IdWubu7gZCGYqSNKwGFiiRcw=
|
github.com/go-kratos/kratos/v2 v2.8.4/go.mod h1:mq62W2101a5uYyRxe+7IdWubu7gZCGYqSNKwGFiiRcw=
|
||||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
|
|||||||
@@ -14,13 +14,14 @@ import (
|
|||||||
"github.com/go-kratos/kratos/v2/log"
|
"github.com/go-kratos/kratos/v2/log"
|
||||||
"github.com/go-kratos/kratos/v2/registry"
|
"github.com/go-kratos/kratos/v2/registry"
|
||||||
|
|
||||||
"github.com/go-kratos/kratos/contrib/middleware/validate/v2"
|
|
||||||
"github.com/go-kratos/kratos/v2/middleware"
|
"github.com/go-kratos/kratos/v2/middleware"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/metadata"
|
"github.com/go-kratos/kratos/v2/middleware/metadata"
|
||||||
midRateLimit "github.com/go-kratos/kratos/v2/middleware/ratelimit"
|
midRateLimit "github.com/go-kratos/kratos/v2/middleware/ratelimit"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/recovery"
|
"github.com/go-kratos/kratos/v2/middleware/recovery"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||||
|
|
||||||
|
"github.com/tx7do/kratos-bootstrap/rpc/middleware/validate"
|
||||||
|
|
||||||
kratosGrpc "github.com/go-kratos/kratos/v2/transport/grpc"
|
kratosGrpc "github.com/go-kratos/kratos/v2/transport/grpc"
|
||||||
|
|
||||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||||
|
|||||||
37
rpc/middleware/validate/validate.go
Normal file
37
rpc/middleware/validate/validate.go
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
package validate
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/go-kratos/kratos/v2/errors"
|
||||||
|
"github.com/go-kratos/kratos/v2/middleware"
|
||||||
|
|
||||||
|
"buf.build/go/protovalidate"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
type validator interface {
|
||||||
|
Validate() error
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProtoValidate is a middleware that validates the request message with [protovalidate](https://github.com/bufbuild/protovalidate)
|
||||||
|
func ProtoValidate() middleware.Middleware {
|
||||||
|
return func(handler middleware.Handler) middleware.Handler {
|
||||||
|
return func(ctx context.Context, req any) (reply any, err error) {
|
||||||
|
if msg, ok := req.(proto.Message); ok {
|
||||||
|
if err := protovalidate.Validate(msg); err != nil {
|
||||||
|
return nil, errors.BadRequest("VALIDATOR", err.Error()).WithCause(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// to compatible with the [old validator](https://github.com/envoyproxy/protoc-gen-validate)
|
||||||
|
if v, ok := req.(validator); ok {
|
||||||
|
if err := v.Validate(); err != nil {
|
||||||
|
return nil, errors.BadRequest("VALIDATOR", err.Error()).WithCause(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return handler(ctx, req)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
rpc/middleware/validate/validate_test.go
Normal file
11
rpc/middleware/validate/validate_test.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package validate
|
||||||
|
|
||||||
|
import (
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
type testcase struct {
|
||||||
|
name string
|
||||||
|
req proto.Message
|
||||||
|
err bool
|
||||||
|
}
|
||||||
@@ -9,13 +9,14 @@ import (
|
|||||||
"github.com/go-kratos/aegis/ratelimit"
|
"github.com/go-kratos/aegis/ratelimit"
|
||||||
"github.com/go-kratos/aegis/ratelimit/bbr"
|
"github.com/go-kratos/aegis/ratelimit/bbr"
|
||||||
|
|
||||||
"github.com/go-kratos/kratos/contrib/middleware/validate/v2"
|
|
||||||
"github.com/go-kratos/kratos/v2/middleware"
|
"github.com/go-kratos/kratos/v2/middleware"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/metadata"
|
"github.com/go-kratos/kratos/v2/middleware/metadata"
|
||||||
midRateLimit "github.com/go-kratos/kratos/v2/middleware/ratelimit"
|
midRateLimit "github.com/go-kratos/kratos/v2/middleware/ratelimit"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/recovery"
|
"github.com/go-kratos/kratos/v2/middleware/recovery"
|
||||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||||
|
|
||||||
|
"github.com/tx7do/kratos-bootstrap/rpc/middleware/validate"
|
||||||
|
|
||||||
kratosRest "github.com/go-kratos/kratos/v2/transport/http"
|
kratosRest "github.com/go-kratos/kratos/v2/transport/http"
|
||||||
|
|
||||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||||
|
|||||||
2
tag.bat
2
tag.bat
@@ -5,7 +5,7 @@ git tag utils/v0.1.4 --force
|
|||||||
git tag cache/redis/v0.0.11 --force
|
git tag cache/redis/v0.0.11 --force
|
||||||
git tag oss/minio/v0.0.10 --force
|
git tag oss/minio/v0.0.10 --force
|
||||||
git tag logger/v0.0.10 --force
|
git tag logger/v0.0.10 --force
|
||||||
git tag rpc/v0.0.16 --force
|
git tag rpc/v0.0.18 --force
|
||||||
git tag tracer/v0.0.10 --force
|
git tag tracer/v0.0.10 --force
|
||||||
|
|
||||||
git tag database/ent/v0.0.10 --force
|
git tag database/ent/v0.0.10 --force
|
||||||
|
|||||||
Reference in New Issue
Block a user