Skip to content

Commit

Permalink
feat: add berty.tech/go/pkg/errcode package (#1440)
Browse files Browse the repository at this point in the history
feat: add berty.tech/go/pkg/errcode package
  • Loading branch information
moul committed Oct 23, 2019
2 parents e4516c8 + 109e7de commit 01929d2
Show file tree
Hide file tree
Showing 49 changed files with 756 additions and 280 deletions.
86 changes: 86 additions & 0 deletions api/errcode.proto
@@ -0,0 +1,86 @@
syntax = "proto3";

package berty.errcode;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option go_package = "berty.tech/go/pkg/errcode";

option (gogoproto.benchgen_all) = false;
option (gogoproto.compare_all) = false;
option (gogoproto.description_all) = false;
option (gogoproto.enum_stringer_all) = false;
option (gogoproto.enumdecl_all) = true;
option (gogoproto.equal_all) = false;
option (gogoproto.face_all) = false;
option (gogoproto.gogoproto_import) = false;
option (gogoproto.goproto_enum_prefix_all) = false;
option (gogoproto.goproto_enum_stringer_all) = false;
option (gogoproto.goproto_extensions_map_all) = false;
option (gogoproto.goproto_getters_all) = false;
option (gogoproto.goproto_registration) = false;
//option (gogoproto.goproto_sizecache_all) = false;
option (gogoproto.goproto_stringer_all) = false;
//option (gogoproto.goproto_unkeyed_all) = false;
option (gogoproto.goproto_unrecognized_all) = false;
option (gogoproto.gostring_all) = false;
option (gogoproto.marshaler_all) = false;
option (gogoproto.messagename_all) = false;
option (gogoproto.onlyone_all) = false;
option (gogoproto.populate_all) = false;
option (gogoproto.protosizer_all) = false;
option (gogoproto.sizer_all) = false;
option (gogoproto.stable_marshaler_all) = false;
option (gogoproto.stringer_all) = false;
option (gogoproto.testgen_all) = false;
option (gogoproto.typedecl_all) = false;
option (gogoproto.unmarshaler_all) = false;
option (gogoproto.unsafe_marshaler_all) = false;
option (gogoproto.unsafe_unmarshaler_all) = false;
option (gogoproto.verbose_equal_all) = false;

enum ErrCode {
Undefined = 0; // default value, should never be set manually

TODO = 666; // indicates that you plan to write a custom error handler later
ErrNotImplemented = 777;
ErrInternal = 999; // can be used to translate an "unknown" error (without Code), i.e., in gRPC

//
// Generic helpers (try to use a more specific error when possible)
//

ErrInvalidInput = 101;
ErrMissingInput = 102;

//
// Berty Chat (starting at 1001)
//

//
// Berty Protocol (starting at 2001)
//

ErrSigChainNoEntries = 2001;
ErrSigChainInvalidEntryType = 2002;
ErrSigChainAlreadyInitialized = 2003;
ErrSigChainPermission = 2004;
ErrSigChainOperationAlreadyDone = 2005;
ErrHandshakeNoPayload = 2006;
ErrHandshakeInvalidFlow = 2007;
ErrHandshakeInvalidFlowStepNotFound = 2008;
ErrHandshakeParams = 2009;
ErrHandshakeNoAuthReturned = 2010;
ErrHandshakeInvalidKeyType = 2011;
ErrHandshakeInvalidSignature = 2012;
ErrHandshakeSessionInvalid = 2013;
ErrHandshakeKeyNotInSigChain = 2014;
ErrHandshakeDecrypt = 2015;

//
// Chat Bridge (starting at 3001)
//

ErrBridgeInterrupted = 3001;
ErrBridgeNotRunning = 3002;
}
1 change: 1 addition & 0 deletions docs/gen.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions githooks/pre-commit
Expand Up @@ -63,6 +63,8 @@ for DIR in $STAGED_GO_DIRS; do
)
done

rm -f go.mod

if ! $PASS; then
printf "\033[0;30m\033[41mCOMMIT FAILED\033[0m\n"
exit 1
Expand Down
16 changes: 8 additions & 8 deletions go/cmd/bertychat/main.go
Expand Up @@ -13,11 +13,11 @@ import (
_ "berty.tech/go/internal/buildconstraints" // fail if bad go version
"berty.tech/go/pkg/bertychat"
"berty.tech/go/pkg/bertyprotocol"
"berty.tech/go/pkg/errcode"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite" // required by gorm
"github.com/peterbourgon/ff"
"github.com/peterbourgon/ff/ffcli"
"github.com/pkg/errors"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
Expand Down Expand Up @@ -46,7 +46,7 @@ func main() {
var err error
logger, err = config.Build()
if err != nil {
return errors.Wrap(err, "failed to initialize logger")
return errcode.TODO.Wrap(err)
}
logger.Debug("logger initialized in debug mode")
} else {
Expand All @@ -57,7 +57,7 @@ func main() {
var err error
logger, err = config.Build()
if err != nil {
return errors.Wrap(err, "failed to initialize logger")
return errcode.TODO.Wrap(err)
}
}
return nil
Expand Down Expand Up @@ -106,7 +106,7 @@ func main() {
// initialize sqlite3 gorm database
db, err := gorm.Open("sqlite3", *clientProtocolURN)
if err != nil {
return errors.Wrap(err, "failed to initialize gorm")
return errcode.TODO.Wrap(err)
}
defer db.Close()

Expand All @@ -116,7 +116,7 @@ func main() {
}
protocol, err = bertyprotocol.New(db, opts)
if err != nil {
return errors.Wrap(err, "failed to initialize protocol")
return errcode.TODO.Wrap(err)
}

defer protocol.Close()
Expand All @@ -128,7 +128,7 @@ func main() {
// initialize sqlite3 gorm database
db, err := gorm.Open("sqlite3", *clientChatURN)
if err != nil {
return errors.Wrap(err, "failed to initialize gorm")
return errcode.TODO.Wrap(err)
}
defer db.Close()

Expand All @@ -138,15 +138,15 @@ func main() {
}
chat, err = bertychat.New(db, protocol, chatOpts)
if err != nil {
return errors.Wrap(err, "failed to initialize chat")
return errcode.TODO.Wrap(err)
}

defer chat.Close()
}

info, err := protocol.AccountGetInformation(ctx, nil)
if err != nil {
return errors.Wrap(err, "failed to get protocol information")
return errcode.TODO.Wrap(err)
}

logger.Info("client initialized", zap.String("peer-id", info.PeerID), zap.Strings("listeners", info.Listeners))
Expand Down
25 changes: 13 additions & 12 deletions go/framework/chatbridge/bridge.go
Expand Up @@ -10,15 +10,16 @@ import (

_ "berty.tech/go/internal/buildconstraints" // fail if bad go version
_ "github.com/jinzhu/gorm/dialects/sqlite" // required by gorm
"github.com/pkg/errors"

"berty.tech/go/internal/bridgeutil"
"berty.tech/go/pkg/bertychat"
"berty.tech/go/pkg/bertyprotocol"
"berty.tech/go/pkg/errcode"

"github.com/improbable-eng/grpc-web/go/grpcweb"
"github.com/jinzhu/gorm"
"github.com/oklog/run"
"github.com/pkg/errors"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"google.golang.org/grpc"
Expand Down Expand Up @@ -86,7 +87,7 @@ func newBridge(logger *zap.Logger, opts Opts) (*Bridge, error) {
b.workers.Add(func() error {
// wait for closing signal
<-b.cclose
return ErrInterrupted
return errcode.ErrBridgeInterrupted
}, func(error) {
b.once.Do(func() { close(b.cclose) })
})
Expand All @@ -96,7 +97,7 @@ func newBridge(logger *zap.Logger, opts Opts) (*Bridge, error) {
var err error
b.protocolDB, err = gorm.Open("sqlite3", ":memory:")
if err != nil {
return nil, errors.Wrap(err, "initialize gorm")
return nil, errcode.TODO.Wrap(err)
}

// initialize new protocol client
Expand All @@ -106,7 +107,7 @@ func newBridge(logger *zap.Logger, opts Opts) (*Bridge, error) {

b.protocolClient, err = bertyprotocol.New(b.protocolDB, protocolOpts)
if err != nil {
return nil, errors.Wrap(err, "initialize protocol")
return nil, errcode.TODO.Wrap(err)
}
}

Expand All @@ -116,7 +117,7 @@ func newBridge(logger *zap.Logger, opts Opts) (*Bridge, error) {
// initialize sqlite3 gorm database
b.chatDB, err = gorm.Open("sqlite3", ":memory:")
if err != nil {
return nil, errors.Wrap(err, "initialize gorm")
return nil, errcode.TODO.Wrap(err)
}

// initialize bertychat client
Expand All @@ -126,7 +127,7 @@ func newBridge(logger *zap.Logger, opts Opts) (*Bridge, error) {

b.chatClient, err = bertychat.New(b.chatDB, b.protocolClient, chatOpts)
if err != nil {
return nil, errors.Wrap(err, "initialize chat")
return nil, errcode.TODO.Wrap(err)
}
}

Expand Down Expand Up @@ -184,7 +185,7 @@ func (b *Bridge) isClosed() bool {
// Close bridge
func (b *Bridge) Close() (err error) {
if b.isClosed() {
return ErrNotRunning
return errcode.ErrBridgeNotRunning
}

b.logger.Info("bridge.Close called")
Expand All @@ -209,8 +210,8 @@ func (b *Bridge) Close() (err error) {
b.protocolClient.Close()
b.protocolDB.Close()

if err != ErrInterrupted {
return errors.Wrap(err, "failed close bridge gracefully")
if err != errcode.ErrBridgeInterrupted {
return errcode.TODO.Wrap(err)
}

return nil
Expand All @@ -222,7 +223,7 @@ func (b *Bridge) Close() (err error) {
func (b *Bridge) addGRPCListener(addr string) (string, error) {
l, err := net.Listen("tcp", addr)
if err != nil {
return "", errors.Wrap(err, "listen")
return "", errcode.TODO.Wrap(err)
}

b.workers.Add(func() error {
Expand All @@ -242,7 +243,7 @@ func (b *Bridge) addGRPCListener(addr string) (string, error) {
func (b *Bridge) addGRPCWebListener(addr string) (string, error) {
l, err := net.Listen("tcp", addr)
if err != nil {
return "", errors.Wrap(err, "listen")
return "", errcode.TODO.Wrap(err)
}

// setup grpc web
Expand Down Expand Up @@ -303,7 +304,7 @@ func (b *Bridge) addGRPCWebListener(addr string) (string, error) {
// NewGRPCClient return client service on success
func (b *Bridge) newGRPCClient() (client *Client, err error) {
if b.isClosed() {
return nil, ErrNotRunning
return nil, errcode.ErrBridgeNotRunning
}

var grpcClient *grpc.ClientConn
Expand Down
11 changes: 0 additions & 11 deletions go/framework/chatbridge/errors.go

This file was deleted.

1 change: 1 addition & 0 deletions go/gen.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 5 additions & 7 deletions go/internal/crypto/crypto.go
Expand Up @@ -3,11 +3,9 @@ package crypto
import (
"context"

"github.com/pkg/errors"

"go.uber.org/zap"

"berty.tech/go/pkg/errcode"
p2pcrypto "github.com/libp2p/go-libp2p-core/crypto"
"go.uber.org/zap"
)

type crypto struct {
Expand All @@ -24,12 +22,12 @@ func (c *crypto) GetDevicePublicKey() p2pcrypto.PubKey {
func (c *crypto) GetAccountPublicKey() (p2pcrypto.PubKey, error) {
initialEntry, err := c.sigChain.GetInitialEntry()
if err != nil {
return nil, errors.Wrap(err, "unable to get initial sig chain entry")
return nil, errcode.TODO.Wrap(err)
}

pubKey, err := initialEntry.GetSubject()
if err != nil {
return nil, errors.Wrap(err, "unable to get entry subject")
return nil, errcode.TODO.Wrap(err)
}

return pubKey, nil
Expand All @@ -45,7 +43,7 @@ func (c *crypto) Sign(data []byte) ([]byte, error) {

func (c *crypto) AddDeviceToOwnSigChain(ctx context.Context, key p2pcrypto.PubKey) error {
_, err := c.sigChain.AddEntry(c.privKey, key, c.opts)
return errors.Wrap(err, "unable to add device to sig chain")
return errcode.TODO.Wrap(err)
}

func (c *crypto) Close() error {
Expand Down

0 comments on commit 01929d2

Please sign in to comment.