add internal/errors

This commit is contained in:
John
2019-06-22 22:05:39 +08:00
parent bb935967ac
commit 9248fd6b28
11 changed files with 111 additions and 90 deletions

View File

@ -9,7 +9,6 @@ package gmd5
import (
"crypto/md5"
"errors"
"fmt"
"io"
"os"
@ -40,9 +39,7 @@ func EncryptFile(path string) (encrypt string, err error) {
return "", err
}
defer func() {
if e := f.Close(); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(f.Close(), "file closing error")
}()
h := md5.New()
_, err = io.Copy(h, f)

View File

@ -10,10 +10,10 @@ package gsha1
import (
"crypto/sha1"
"encoding/hex"
"errors"
"io"
"os"
"github.com/gogf/gf/g/internal/errors"
"github.com/gogf/gf/g/util/gconv"
)
@ -37,9 +37,7 @@ func EncryptFile(path string) (encrypt string, err error) {
return "", err
}
defer func() {
if e := f.Close(); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(f.Close(), "file closing error")
}()
h := sha1.New()
_, err = io.Copy(h, f)

View File

@ -0,0 +1,48 @@
// Copyright 2019 gf Author(https://github.com/gogf/gf). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
// Package errors provides simple functions to manipulate errors.
//
// This package can be scalable due to https://go.googlesource.com/proposal/+/master/design/go2draft.md.
package errors
import "github.com/gogf/gf/g/util/gconv"
// errorWrapper is a simple wrapper for errors.
type errorWrapper struct {
s string
}
// New returns an error that formats as the given value.
func New(value interface{}) error {
if value == nil {
return nil
}
return NewText(gconv.String(value))
}
// NewText returns an error that formats as the given text.
func NewText(text string) error {
if text == "" {
return nil
}
return &errorWrapper{
s: text,
}
}
// Wrap wraps error with text.
func Wrap(err error, text string) error {
if err == nil {
return nil
}
return NewText(text + ": " + err.Error())
}
// Error implements interface Error.
func (e *errorWrapper) Error() string {
return e.s
}

View File

@ -0,0 +1,39 @@
// Copyright 2019 gf Author(https://github.com/gogf/gf). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package errors_test
import (
"testing"
"github.com/gogf/gf/g/internal/errors"
"github.com/gogf/gf/g/test/gtest"
)
func interfaceNil() interface{} {
return nil
}
func nilError() error {
return nil
}
func Test_Nil(t *testing.T) {
gtest.Case(t, func() {
gtest.Assert(errors.New(interfaceNil()), nil)
gtest.Assert(errors.Wrap(nilError(), "test"), nil)
})
}
func Test_Wrap(t *testing.T) {
gtest.Case(t, func() {
err := errors.New("1")
err = errors.Wrap(err, "func2 error")
err = errors.Wrap(err, "func3 error")
gtest.AssertNE(err, nil)
gtest.Assert(err.Error(), "func3 error: func2 error: 1")
})
}

View File

@ -10,10 +10,11 @@ import (
"bufio"
"bytes"
"crypto/tls"
"errors"
"io"
"net"
"time"
"github.com/gogf/gf/g/internal/errors"
)
// 封装的链接对象
@ -208,9 +209,7 @@ func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry
return nil, err
}
defer func() {
if e := c.SetRecvDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetRecvDeadline(time.Time{}), "SetRecvDeadline error")
}()
data, err = c.Recv(length, retry...)
return
@ -222,9 +221,7 @@ func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retr
return err
}
defer func() {
if e := c.SetSendDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetSendDeadline(time.Time{}), "SetSendDeadline error")
}()
err = c.Send(data, retry...)
return

View File

@ -8,9 +8,10 @@ package gtcp
import (
"encoding/binary"
"errors"
"fmt"
"time"
"github.com/gogf/gf/g/internal/errors"
)
const (
@ -73,9 +74,7 @@ func (c *Conn) SendPkgWithTimeout(data []byte, timeout time.Duration, option ...
return err
}
defer func() {
if e := c.SetSendDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetSendDeadline(time.Time{}), "SetSendDeadline error")
}()
err = c.SendPkg(data, option...)
return
@ -148,9 +147,7 @@ func (c *Conn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption) (d
return nil, err
}
defer func() {
if e := c.SetRecvDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetRecvDeadline(time.Time{}), "SetRecvDeadline error")
}()
data, err = c.RecvPkg(option...)
return

View File

@ -7,9 +7,10 @@
package gtcp
import (
"errors"
"time"
"github.com/gogf/gf/g/internal/errors"
"github.com/gogf/gf/g/container/gmap"
"github.com/gogf/gf/g/container/gpool"
)
@ -121,9 +122,7 @@ func (c *PoolConn) RecvWithTimeout(length int, timeout time.Duration, retry ...R
return nil, err
}
defer func() {
if e := c.SetRecvDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetRecvDeadline(time.Time{}), "SetRecvDeadline error")
}()
data, err = c.Recv(length, retry...)
return
@ -135,9 +134,7 @@ func (c *PoolConn) SendWithTimeout(data []byte, timeout time.Duration, retry ...
return err
}
defer func() {
if e := c.SetSendDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetSendDeadline(time.Time{}), "SetSendDeadline error")
}()
err = c.Send(data, retry...)
return

View File

@ -7,8 +7,9 @@
package gtcp
import (
"errors"
"time"
"github.com/gogf/gf/g/internal/errors"
)
// 简单协议: (方法覆盖)发送数据
@ -46,9 +47,7 @@ func (c *PoolConn) RecvPkgWithTimeout(timeout time.Duration, option ...PkgOption
return nil, err
}
defer func() {
if e := c.SetRecvDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetRecvDeadline(time.Time{}), "SetRecvDeadline error")
}()
data, err = c.RecvPkg(option...)
return
@ -60,9 +59,7 @@ func (c *PoolConn) SendPkgWithTimeout(data []byte, timeout time.Duration, option
return err
}
defer func() {
if e := c.SetSendDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetSendDeadline(time.Time{}), "SetSendDeadline error")
}()
err = c.SendPkg(data, option...)
return

View File

@ -7,10 +7,11 @@
package gudp
import (
"errors"
"io"
"net"
"time"
"github.com/gogf/gf/g/internal/errors"
)
// 封装的UDP链接对象
@ -181,9 +182,7 @@ func (c *Conn) RecvWithTimeout(length int, timeout time.Duration, retry ...Retry
return nil, err
}
defer func() {
if e := c.SetRecvDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetRecvDeadline(time.Time{}), "SetRecvDeadline error")
}()
data, err = c.Recv(length, retry...)
return
@ -195,9 +194,7 @@ func (c *Conn) SendWithTimeout(data []byte, timeout time.Duration, retry ...Retr
return err
}
defer func() {
if e := c.SetSendDeadline(time.Time{}); e != nil {
err = errors.New(err.Error() + "; " + e.Error())
}
err = errors.Wrap(c.SetSendDeadline(time.Time{}), "SetSendDeadline error")
}()
err = c.Send(data, retry...)
return

View File

@ -1,51 +1,5 @@
package main
import (
"fmt"
"github.com/gogf/gf/g/encoding/gjson"
"github.com/gogf/gf/g/util/gconv"
)
//type TemplateMessage struct {
// Touser string `json:"touser,omitempty"`
// TemplateId string `json:"template_id,omitempty"`
// Miniprogram interface{} `json:"miniprograme,omitempty"`
// Data interface{} `json:"data,omitempty"`
//}
type TemplateMessage struct {
Touser string `json:"touser,omitempty"`
TemplateId string `json:"template_id,omitempty"`
Miniprogram *gjson.Json `json:"miniprograme,omitempty"`
Data *gjson.Json `json:"data,omitempty"`
}
// 封装模版消息
func getTemplateMessage(message string) string {
templateId := "22222222"
miniprogram := `{"appid":"111111111","pagepath":"pages\/index?ald_media_id=20962&ald_link_key=bd660b4962a599f2"}`
data := `{"first":{"value":"送您一个随机红包点击领取¥0.3-¥10","color":"#FF0000"},"keyword1":{"value":"¥0.3-¥10"},"keyword2":{"value":"2019年06月19日 11:45"},"keyword3":{"value":"微信零钱"},"keyword4":{"value":"点击此消息即可提现","color":"#FF0000"}}`
miniprogramJson := gjson.New(miniprogram)
dataJson := gjson.New(data)
//glog.Infof(miniprogramJson.ToJsonString())
//glog.Info(dataJson.ToJsonString())
templateMessage := TemplateMessage{
Touser: message,
TemplateId: templateId,
Miniprogram: miniprogramJson,
Data: dataJson,
}
//glog.Debug(dataJson.ToJsonString())
//json, _ := gjson.New(templateMessage).ToJsonString()
//return json
//glog.Info(templateMessage.Miniprogram.ToJsonString())
return gconv.String(templateMessage)
}
func main() {
fmt.Println(getTemplateMessage("test"))
}

2
go.mod
View File

@ -1 +1 @@
module github.com/gogf/gf
module github.com/gogf/gf