Skip to content

Commit

Permalink
change errors wrapped by gerror.Wrap with error stack info for all pa…
Browse files Browse the repository at this point in the history
…ckages
  • Loading branch information
gqcn committed Dec 21, 2021
1 parent 7e81600 commit ce93b62
Show file tree
Hide file tree
Showing 67 changed files with 589 additions and 321 deletions.
4 changes: 4 additions & 0 deletions container/gtree/gtree_btree.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ package gtree

import (
"bytes"
"context"
"fmt"
"strings"

"github.com/gogf/gf/v2/container/gvar"
"github.com/gogf/gf/v2/internal/intlog"
"github.com/gogf/gf/v2/internal/json"
"github.com/gogf/gf/v2/internal/rwmutex"
"github.com/gogf/gf/v2/util/gconv"
Expand Down Expand Up @@ -573,8 +575,10 @@ func (tree *BTree) output(buffer *bytes.Buffer, node *BTreeNode, level int, isTa
}
if e < len(node.Entries) {
if _, err := buffer.WriteString(strings.Repeat(" ", level)); err != nil {
intlog.Error(context.TODO(), err)
}
if _, err := buffer.WriteString(fmt.Sprintf("%v", node.Entries[e].Key) + "\n"); err != nil {
intlog.Error(context.TODO(), err)
}
}
}
Expand Down
10 changes: 7 additions & 3 deletions container/gtype/gtype_bytes.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"encoding/base64"
"sync/atomic"

"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
)

Expand Down Expand Up @@ -65,10 +66,13 @@ func (v *Bytes) MarshalJSON() ([]byte, error) {

// UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.
func (v *Bytes) UnmarshalJSON(b []byte) error {
src := make([]byte, base64.StdEncoding.DecodedLen(len(b)))
n, err := base64.StdEncoding.Decode(src, bytes.Trim(b, `"`))
var (
src = make([]byte, base64.StdEncoding.DecodedLen(len(b)))
n, err = base64.StdEncoding.Decode(src, bytes.Trim(b, `"`))
)
if err != nil {
return nil
err = gerror.Wrap(err, `base64.StdEncoding.Decode failed`)
return err
}
v.Set(src[:n])
return nil
Expand Down
3 changes: 1 addition & 2 deletions container/gtype/gtype_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ func (v *Interface) MarshalJSON() ([]byte, error) {
// UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.
func (v *Interface) UnmarshalJSON(b []byte) error {
var i interface{}
err := json.UnmarshalUseNumber(b, &i)
if err != nil {
if err := json.UnmarshalUseNumber(b, &i); err != nil {
return err
}
v.Set(i)
Expand Down
3 changes: 1 addition & 2 deletions container/gvar/gvar.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,7 @@ func (v *Var) MarshalJSON() ([]byte, error) {
// UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.
func (v *Var) UnmarshalJSON(b []byte) error {
var i interface{}
err := json.UnmarshalUseNumber(b, &i)
if err != nil {
if err := json.UnmarshalUseNumber(b, &i); err != nil {
return err
}
v.Set(i)
Expand Down
4 changes: 4 additions & 0 deletions crypto/gaes/gaes.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func Decrypt(cipherText []byte, key []byte, iv ...[]byte) ([]byte, error) {
func EncryptCBC(plainText []byte, key []byte, iv ...[]byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `aes.NewCipher failed for key "%s"`, key)
return nil, err
}
blockSize := block.BlockSize()
Expand All @@ -61,6 +62,7 @@ func EncryptCBC(plainText []byte, key []byte, iv ...[]byte) ([]byte, error) {
func DecryptCBC(cipherText []byte, key []byte, iv ...[]byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `aes.NewCipher failed for key "%s"`, key)
return nil, err
}
blockSize := block.BlockSize()
Expand Down Expand Up @@ -123,6 +125,7 @@ func PKCS5UnPadding(src []byte, blockSize int) ([]byte, error) {
func EncryptCFB(plainText []byte, key []byte, padding *int, iv ...[]byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `aes.NewCipher failed for key "%s"`, key)
return nil, err
}
blockSize := block.BlockSize()
Expand All @@ -145,6 +148,7 @@ func EncryptCFB(plainText []byte, key []byte, padding *int, iv ...[]byte) ([]byt
func DecryptCFB(cipherText []byte, key []byte, unPadding int, iv ...[]byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `aes.NewCipher failed for key "%s"`, key)
return nil, err
}
if len(cipherText) < aes.BlockSize {
Expand Down
31 changes: 21 additions & 10 deletions crypto/gdes/gdes.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ func EncryptECB(plainText []byte, key []byte, padding int) ([]byte, error) {
}

cipherText := make([]byte, len(text))

block, err := des.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewCipher failed for key "%s"`, key)
return nil, err
}

Expand All @@ -48,6 +48,7 @@ func DecryptECB(cipherText []byte, key []byte, padding int) ([]byte, error) {
text := make([]byte, len(cipherText))
block, err := des.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewCipher failed for key "%s"`, key)
return nil, err
}

Expand Down Expand Up @@ -86,6 +87,7 @@ func EncryptECBTriple(plainText []byte, key []byte, padding int) ([]byte, error)

block, err := des.NewTripleDESCipher(newKey)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewTripleDESCipher failed for key "%s"`, newKey)
return nil, err
}

Expand Down Expand Up @@ -115,6 +117,7 @@ func DecryptECBTriple(cipherText []byte, key []byte, padding int) ([]byte, error

block, err := des.NewTripleDESCipher(newKey)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewTripleDESCipher failed for key "%s"`, newKey)
return nil, err
}

Expand All @@ -136,11 +139,12 @@ func DecryptECBTriple(cipherText []byte, key []byte, padding int) ([]byte, error
func EncryptCBC(plainText []byte, key []byte, iv []byte, padding int) ([]byte, error) {
block, err := des.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewCipher failed for key "%s"`, key)
return nil, err
}

if len(iv) != block.BlockSize() {
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "iv length invalid")
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "invalid iv length")
}

text, err := Padding(plainText, padding)
Expand All @@ -149,8 +153,8 @@ func EncryptCBC(plainText []byte, key []byte, iv []byte, padding int) ([]byte, e
}
cipherText := make([]byte, len(text))

encrypter := cipher.NewCBCEncrypter(block, iv)
encrypter.CryptBlocks(cipherText, text)
encryptor := cipher.NewCBCEncrypter(block, iv)
encryptor.CryptBlocks(cipherText, text)

return cipherText, nil
}
Expand All @@ -159,6 +163,7 @@ func EncryptCBC(plainText []byte, key []byte, iv []byte, padding int) ([]byte, e
func DecryptCBC(cipherText []byte, key []byte, iv []byte, padding int) ([]byte, error) {
block, err := des.NewCipher(key)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewCipher failed for key "%s"`, key)
return nil, err
}

Expand Down Expand Up @@ -194,11 +199,12 @@ func EncryptCBCTriple(plainText []byte, key []byte, iv []byte, padding int) ([]b

block, err := des.NewTripleDESCipher(newKey)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewTripleDESCipher failed for key "%s"`, newKey)
return nil, err
}

if len(iv) != block.BlockSize() {
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "iv length invalid")
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "invalid iv length")
}

text, err := Padding(plainText, padding)
Expand Down Expand Up @@ -229,11 +235,12 @@ func DecryptCBCTriple(cipherText []byte, key []byte, iv []byte, padding int) ([]

block, err := des.NewTripleDESCipher(newKey)
if err != nil {
err = gerror.WrapCodef(gcode.CodeInvalidParameter, err, `des.NewTripleDESCipher failed for key "%s"`, newKey)
return nil, err
}

if len(iv) != block.BlockSize() {
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "iv length invalid")
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "invalid iv length")
}

text := make([]byte, len(cipherText))
Expand Down Expand Up @@ -264,12 +271,14 @@ func Padding(text []byte, padding int) ([]byte, error) {
switch padding {
case NOPADDING:
if len(text)%8 != 0 {
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "text length invalid")
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "invalid text length")
}

case PKCS5PADDING:
return PaddingPKCS5(text, 8), nil

default:
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "padding type error")
return nil, gerror.NewCodef(gcode.CodeInvalidParameter, `unsupported padding type "%d"`, padding)
}

return text, nil
Expand All @@ -279,12 +288,14 @@ func UnPadding(text []byte, padding int) ([]byte, error) {
switch padding {
case NOPADDING:
if len(text)%8 != 0 {
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "text length invalid")
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "invalid text length")
}

case PKCS5PADDING:
return UnPaddingPKCS5(text), nil

default:
return nil, gerror.NewCode(gcode.CodeInvalidParameter, "padding type error")
return nil, gerror.NewCodef(gcode.CodeInvalidParameter, `unsupported padding type "%d"`, padding)
}
return text, nil
}
8 changes: 6 additions & 2 deletions crypto/gmd5/gmd5.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"io"
"os"

"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
)

Expand All @@ -36,7 +37,8 @@ func MustEncrypt(data interface{}) string {
// EncryptBytes encrypts `data` using MD5 algorithms.
func EncryptBytes(data []byte) (encrypt string, err error) {
h := md5.New()
if _, err = h.Write([]byte(data)); err != nil {
if _, err = h.Write(data); err != nil {
err = gerror.Wrap(err, `hash.Write failed`)
return "", err
}
return fmt.Sprintf("%x", h.Sum(nil)), nil
Expand All @@ -52,7 +54,7 @@ func MustEncryptBytes(data []byte) string {
return result
}

// EncryptBytes encrypts string `data` using MD5 algorithms.
// EncryptString encrypts string `data` using MD5 algorithms.
func EncryptString(data string) (encrypt string, err error) {
return EncryptBytes([]byte(data))
}
Expand All @@ -71,12 +73,14 @@ func MustEncryptString(data string) string {
func EncryptFile(path string) (encrypt string, err error) {
f, err := os.Open(path)
if err != nil {
err = gerror.Wrapf(err, `os.Open failed for name "%s"`, path)
return "", err
}
defer f.Close()
h := md5.New()
_, err = io.Copy(h, f)
if err != nil {
err = gerror.Wrap(err, `io.Copy failed`)
return "", err
}
return fmt.Sprintf("%x", h.Sum(nil)), nil
Expand Down
4 changes: 4 additions & 0 deletions crypto/gsha1/gsha1.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (
"io"
"os"

"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
)

Expand All @@ -27,12 +29,14 @@ func Encrypt(v interface{}) string {
func EncryptFile(path string) (encrypt string, err error) {
f, err := os.Open(path)
if err != nil {
err = gerror.Wrapf(err, `os.Open failed for name "%s"`, path)
return "", err
}
defer f.Close()
h := sha1.New()
_, err = io.Copy(h, f)
if err != nil {
err = gerror.Wrap(err, `io.Copy failed`)
return "", err
}
return hex.EncodeToString(h.Sum(nil)), nil
Expand Down
12 changes: 7 additions & 5 deletions database/gdb/gdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ const (
sqlTypeExecContext = `DB.ExecContext`
sqlTypePrepareContext = `DB.PrepareContext`
modelForDaoSuffix = `ForDao`
dbRoleSlave = `slave`
)

var (
Expand Down Expand Up @@ -400,10 +401,12 @@ func Instance(name ...string) (db DB, err error) {
func getConfigNodeByGroup(group string, master bool) (*ConfigNode, error) {
if list, ok := configs.config[group]; ok {
// Separates master and slave configuration nodes array.
masterList := make(ConfigGroup, 0)
slaveList := make(ConfigGroup, 0)
var (
masterList = make(ConfigGroup, 0)
slaveList = make(ConfigGroup, 0)
)
for i := 0; i < len(list); i++ {
if list[i].Role == "slave" {
if list[i].Role == dbRoleSlave {
slaveList = append(slaveList, list[i])
} else {
masterList = append(masterList, list[i])
Expand Down Expand Up @@ -513,8 +516,7 @@ func (c *Core) getSqlDb(master bool, schema ...string) (sqlDb *sql.DB, err error
}
}()

sqlDb, err = c.db.Open(node)
if err != nil {
if sqlDb, err = c.db.Open(node); err != nil {
return nil
}

Expand Down
Loading

0 comments on commit ce93b62

Please sign in to comment.