middleware checker

pull/458/head
withchao 2 years ago
parent ccbacc283a
commit 95d75ad7ed

@ -2,6 +2,7 @@ package a2r
import ( import (
"context" "context"
"github.com/OpenIMSDK/Open-IM-Server/pkg/checker"
"github.com/OpenIMSDK/Open-IM-Server/pkg/apiresp" "github.com/OpenIMSDK/Open-IM-Server/pkg/apiresp"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
@ -21,7 +22,7 @@ func Call[A, B, C any](
apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap()) // 参数错误 apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap()) // 参数错误
return return
} }
if check, ok := any(&req).(interface{ Check() error }); ok { if check, ok := any(&req).(checker.Checker); ok {
if err := check.Check(); err != nil { if err := check.Check(); err != nil {
log.ZWarn(c, "custom check error", err, "req", req) log.ZWarn(c, "custom check error", err, "req", req)
apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败 apiresp.GinError(c, errs.ErrArgs.Wrap(err.Error())) // 参数校验失败

@ -0,0 +1,5 @@
package checker
type Checker interface {
Check() error
}

@ -3,6 +3,7 @@ package mw
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/OpenIMSDK/Open-IM-Server/pkg/checker"
"math" "math"
"runtime" "runtime"
"strings" "strings"
@ -91,6 +92,11 @@ func RpcServerInterceptor(ctx context.Context, req interface{}, info *grpc.Unary
return nil, status.New(codes.InvalidArgument, err.Error()).Err() return nil, status.New(codes.InvalidArgument, err.Error()).Err()
} }
} }
if err := req.(checker.Checker); err != nil {
if err := err.Check(); err != nil {
return nil, status.New(codes.InvalidArgument, err.Error()).Err()
}
}
log.ZInfo(ctx, "rpc server req", "funcName", funcName, "req", rpcString(req)) log.ZInfo(ctx, "rpc server req", "funcName", funcName, "req", rpcString(req))
resp, err = handler(ctx, req) resp, err = handler(ctx, req)
if err == nil { if err == nil {

Loading…
Cancel
Save