From eee902abec5ef15e98ddb6aed1b37ba25cfb3bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Fri, 16 Jun 2023 08:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/api_node.go | 8 +++++++- internal/rpc/services/service_base.go | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 6dbe2758..2af31fa2 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -28,6 +28,7 @@ import ( "github.com/iwind/gosock/pkg/gosock" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/status" "gopkg.in/yaml.v3" "log" "net" @@ -832,7 +833,12 @@ func (this *APINode) unaryInterceptor(ctx context.Context, req any, info *grpc.U } result, err := handler(ctx, req) if err != nil { - err = errors.New("'" + info.FullMethod + "()' says: " + err.Error()) + statusErr, ok := status.FromError(err) + if ok { + err = status.Error(statusErr.Code(), "'" + info.FullMethod + "()' says: " + err.Error()) + } else { + err = errors.New("'" + info.FullMethod + "()' says: " + err.Error()) + } } return result, err } diff --git a/internal/rpc/services/service_base.go b/internal/rpc/services/service_base.go index 8f793e56..6b4a2e08 100644 --- a/internal/rpc/services/service_base.go +++ b/internal/rpc/services/service_base.go @@ -16,7 +16,9 @@ import ( "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/maps" + "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" ) type BaseService struct { @@ -229,7 +231,7 @@ func (this *BaseService) PermissionError() error { } func (this *BaseService) NotImplementedYet() error { - return errors.New("not implemented yet") + return status.Error(codes.Unimplemented, "not implemented yet") } // NullTx 空的数据库事务