Skip to content

Commit

Permalink
add WrapErrf()
Browse files Browse the repository at this point in the history
  • Loading branch information
wnanbei committed Sep 27, 2019
1 parent b2301ca commit 4b49f34
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 13 deletions.
10 changes: 10 additions & 0 deletions datatype_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ func TestHeaders(t *testing.T) {
}
}

//func TestParams(t *testing.T) {
// params := NewParams("xxx", "yyy")
// proxy := &Proxy{
// HTTPS: "xxx",
// HTTP: "xxx",
// }
// req := NewRequestSetting("Post", "http://www.baidu.com", params, proxy)
// fmt.Printf("%+v", req)
//}

func TestStringSliceMap(t *testing.T) {
params := NewParams(
"key1", "value1",
Expand Down
15 changes: 7 additions & 8 deletions download.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func (session *Session) send(reqSetting *RequestSetting) (*Response, error) {
// Make new http.Request
req, err := http.NewRequest(reqSetting.Method, reqSetting.URL, nil)
if err != nil {
return nil, WrapError(err, "build Request error, please check request url or request method")
return nil, WrapErr(err, "build Request error, please check request url or request method")
}

// Handle the Headers.
Expand All @@ -24,7 +24,7 @@ func (session *Session) send(reqSetting *RequestSetting) (*Response, error) {
// Add proxy method to transport
proxyFunc, err := getProxyFunc(reqSetting.Proxy, session.Proxy)
if err != nil {
return nil, WrapError(err, "build proxy failed, please check Proxy and session.Proxy")
return nil, WrapErr(err, "build proxy failed, please check Proxy and session.Proxy")
}
if proxyFunc != nil {
session.transport.Proxy = proxyFunc
Expand Down Expand Up @@ -72,7 +72,7 @@ func (session *Session) send(reqSetting *RequestSetting) (*Response, error) {

resp, err := session.client.Do(req) // do request
if err != nil {
return nil, WrapError(err, "Request Error")
return nil, WrapErr(err, "Request Error")
}
defer func() {
if err := resp.Body.Close(); err != nil {
Expand All @@ -82,7 +82,7 @@ func (session *Session) send(reqSetting *RequestSetting) (*Response, error) {

response, err := buildResponse(reqSetting, resp)
if err != nil {
return nil, WrapError(err, "build Response Error")
return nil, WrapErr(err, "build Response Error")
}
return response, nil
}
Expand All @@ -91,7 +91,7 @@ func (session *Session) send(reqSetting *RequestSetting) (*Response, error) {
func buildResponse(req *RequestSetting, resp *http.Response) (*Response, error) {
content, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, WrapError(err, "read Response.Body failed")
return nil, WrapErr(err, "read Response.Body failed")
}
return &Response{
URL: req.URL,
Expand Down Expand Up @@ -140,11 +140,11 @@ func getProxyFunc(p1, p2 *Proxy) (func(*http.Request) (*url.URL, error), error)

httpURL, err := url.Parse(p.HTTP)
if err != nil {
return nil, WrapError(err, "Proxy URL error, please check proxy url")
return nil, WrapErr(err, "Proxy URL error, please check proxy url")
}
httpsURL, err := url.Parse(p.HTTPS)
if err != nil {
return nil, WrapError(err, "Proxy URL error, please check proxy url")
return nil, WrapErr(err, "Proxy URL error, please check proxy url")
}

return func(req *http.Request) (*url.URL, error) { // Create a function to choose proxy when transport start request
Expand All @@ -165,6 +165,5 @@ func getRedirectFunc(r int) func(req *http.Request, via []*http.Request) error {
}
return nil
}

return redirectFunc
}
18 changes: 16 additions & 2 deletions error.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,22 @@ func (e *Error) Unwrap() error {
return nil
}

// WrapError will wrap a error with some information: filename, line, time and some message.
func WrapError(err error, msg string) error {
// WrapErr will wrap a error with some information: filename, line, time and some message.
func WrapErr(err error, msg string) error {
_, file, line, _ := runtime.Caller(1)
return &Error{
err: err,
msg: msg,
file: file,
fileLine: line,
time: time.Now().Format("2006-01-02 15:04:05"),
}
}

// WrapErr will wrap a error with some information: filename, line, time and some message.
// You can format message of error.
func WrapErrf(err error, format string, args ...interface{}) error {
msg := fmt.Sprintf(format, args...)
_, file, line, _ := runtime.Caller(1)
return &Error{
err: err,
Expand Down
4 changes: 2 additions & 2 deletions error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (

func TestError(t *testing.T) {
err1 := ErrRequestBody
err2 := WrapError(err1, "second testing")
err3 := WrapError(err2, "third testing")
err2 := WrapErr(err1, "second testing")
err3 := WrapErr(err2, "third testing")

if !errors.Is(err3, ErrRequestBody) {
t.Fatal("Test errors.Is failed.")
Expand Down
2 changes: 1 addition & 1 deletion session.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type Session struct {
func (session *Session) Request(reqSetting *RequestSetting) (*Response, error) {
resp, err := session.send(reqSetting)
if err != nil {
return nil, WrapError(err, "request failed")
return nil, WrapErr(err, "request failed")
}
return resp, nil
}
Expand Down

0 comments on commit 4b49f34

Please sign in to comment.