From 131916baca1efac5de738e3da48ffb9d451e2913 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Thu, 8 Oct 2020 13:19:30 +0300 Subject: [PATCH] not use internal protobuf to transfer error Signed-off-by: Vasiliy Tolstov --- error.go | 5 - errors_test.go | 17 --- generate.go | 3 - internal/errors/client_errors.pb.go | 179 ---------------------------- internal/errors/client_errors.proto | 11 -- internal/errors/errors.go | 159 ------------------------ 6 files changed, 374 deletions(-) delete mode 100644 errors_test.go delete mode 100644 generate.go delete mode 100644 internal/errors/client_errors.pb.go delete mode 100644 internal/errors/client_errors.proto delete mode 100644 internal/errors/errors.go diff --git a/error.go b/error.go index 2e72685..6ca8baa 100644 --- a/error.go +++ b/error.go @@ -1,7 +1,6 @@ package grpc import ( - pb "github.com/unistack-org/micro-client-grpc/internal/errors" "github.com/unistack-org/micro/v3/errors" "google.golang.org/grpc/status" ) @@ -17,10 +16,6 @@ func microError(err error) error { return verr } - if verr, ok := err.(*pb.Error); ok { - return &errors.Error{Id: verr.Id, Code: verr.Code, Detail: verr.Detail, Status: verr.Status} - } - // grpc error s, ok := status.FromError(err) if !ok { diff --git a/errors_test.go b/errors_test.go deleted file mode 100644 index 1a243b4..0000000 --- a/errors_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package grpc_test - -import ( - "testing" - - pb "github.com/unistack-org/micro-client-grpc/internal/errors" - "google.golang.org/protobuf/types/known/anypb" -) - -func TestErrors(t *testing.T) { - any, err := anypb.New(&pb.Error{}) - if err != nil { - t.Fatal(err) - } - - t.Logf("cli any: %#+v\n", any) -} diff --git a/generate.go b/generate.go deleted file mode 100644 index 1413b18..0000000 --- a/generate.go +++ /dev/null @@ -1,3 +0,0 @@ -package grpc - -//go:generate protoc -I./internal/errors -I. --go_out=paths=source_relative:./internal/errors internal/errors/client_errors.proto diff --git a/internal/errors/client_errors.pb.go b/internal/errors/client_errors.pb.go deleted file mode 100644 index dfd80ea..0000000 --- a/internal/errors/client_errors.pb.go +++ /dev/null @@ -1,179 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.6.1 -// source: client_errors.proto - -package errors - -import ( - proto "github.com/golang/protobuf/proto" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type Error struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"` - Detail string `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"` - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *Error) Reset() { - *x = Error{} - if protoimpl.UnsafeEnabled { - mi := &file_client_errors_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Error) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Error) ProtoMessage() {} - -func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_client_errors_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Error.ProtoReflect.Descriptor instead. -func (*Error) Descriptor() ([]byte, []int) { - return file_client_errors_proto_rawDescGZIP(), []int{0} -} - -func (x *Error) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Error) GetCode() int32 { - if x != nil { - return x.Code - } - return 0 -} - -func (x *Error) GetDetail() string { - if x != nil { - return x.Detail - } - return "" -} - -func (x *Error) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -var File_client_errors_proto protoreflect.FileDescriptor - -var file_client_errors_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x6f, 0x72, 0x67, 0x2e, 0x75, 0x6e, 0x69, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x22, 0x5b, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x3b, 0x5a, - 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x69, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2d, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_client_errors_proto_rawDescOnce sync.Once - file_client_errors_proto_rawDescData = file_client_errors_proto_rawDesc -) - -func file_client_errors_proto_rawDescGZIP() []byte { - file_client_errors_proto_rawDescOnce.Do(func() { - file_client_errors_proto_rawDescData = protoimpl.X.CompressGZIP(file_client_errors_proto_rawDescData) - }) - return file_client_errors_proto_rawDescData -} - -var file_client_errors_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_client_errors_proto_goTypes = []interface{}{ - (*Error)(nil), // 0: org.unistack.micro.errors.Error -} -var file_client_errors_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_client_errors_proto_init() } -func file_client_errors_proto_init() { - if File_client_errors_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_client_errors_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_client_errors_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_client_errors_proto_goTypes, - DependencyIndexes: file_client_errors_proto_depIdxs, - MessageInfos: file_client_errors_proto_msgTypes, - }.Build() - File_client_errors_proto = out.File - file_client_errors_proto_rawDesc = nil - file_client_errors_proto_goTypes = nil - file_client_errors_proto_depIdxs = nil -} diff --git a/internal/errors/client_errors.proto b/internal/errors/client_errors.proto deleted file mode 100644 index 0117e1f..0000000 --- a/internal/errors/client_errors.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option go_package = "github.com/unistack-org/micro-client-grpc/internal/errors"; -package org.unistack.micro.errors; - -message Error { - string id = 1; - int32 code = 2; - string detail = 3; - string status = 4; -}; diff --git a/internal/errors/errors.go b/internal/errors/errors.go deleted file mode 100644 index 6dde75c..0000000 --- a/internal/errors/errors.go +++ /dev/null @@ -1,159 +0,0 @@ -package errors - -import ( - "fmt" -) - -func (e *Error) Error() string { - return fmt.Sprintf(`{"id":"%s","code":%d,"detail":"%s","status":"%s"}`, e.Id, e.Code, e.Detail, e.Status) -} - -// New generates a custom error. -func New(id, detail string, code int32) error { - return &Error{ - Id: id, - Code: code, - Detail: detail, - // Status: http.StatusText(int(code)), - } -} - -// BadRequest generates a 400 error. -func BadRequest(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 400, - Detail: fmt.Sprintf(format, a...), - // Status: http.StatusText(400), - } -} - -// Unauthorized generates a 401 error. -func Unauthorized(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 401, - Detail: fmt.Sprintf(format, a...), - // Status: http.StatusText(401), - } -} - -// Forbidden generates a 403 error. -func Forbidden(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 403, - Detail: fmt.Sprintf(format, a...), - // Status: http.StatusText(403), - } -} - -// NotFound generates a 404 error. -func NotFound(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 404, - Detail: fmt.Sprintf(format, a...), - // Status: http.StatusText(404), - } -} - -// MethodNotAllowed generates a 405 error. -func MethodNotAllowed(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 405, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(405), - } -} - -// Timeout generates a 408 error. -func Timeout(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 408, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(408), - } -} - -// Conflict generates a 409 error. -func Conflict(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 409, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(409), - } -} - -// InternalServerError generates a 500 error. -func InternalServerError(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 500, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(500), - } -} - -// NotImplemented generates a 501 error -func NotImplemented(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 501, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(501), - } -} - -// BadGateway generates a 502 error -func BadGateway(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 502, - Detail: fmt.Sprintf(format, a...), - // Status: http.StatusText(502), - } -} - -// ServiceUnavailable generates a 503 error -func ServiceUnavailable(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 503, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(503), - } -} - -// GatewayTimeout generates a 504 error -func GatewayTimeout(id, format string, a ...interface{}) error { - return &Error{ - Id: id, - Code: 504, - Detail: fmt.Sprintf(format, a...), - //Status: http.StatusText(504), - } -} - -// Equal tries to compare errors -func Equal(err1 error, err2 error) bool { - verr1, ok1 := err1.(*Error) - verr2, ok2 := err2.(*Error) - - if ok1 != ok2 { - return false - } - - if !ok1 { - return err1 == err2 - } - - if verr1.Code != verr2.Code { - return false - } - - return true -}