From 5abe760109d5db89942b31e6bfdde30b1a419e27 Mon Sep 17 00:00:00 2001 From: Matthew Poer Date: Mon, 5 Aug 2019 10:39:49 -0400 Subject: [PATCH] Includes Cookies in Debug Request Log Minor formatting improvements. Fixes #260. --- middleware.go | 10 +++++----- util.go | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/middleware.go b/middleware.go index 9b6f102e..21154cf5 100644 --- a/middleware.go +++ b/middleware.go @@ -231,11 +231,11 @@ func requestLogger(c *Client, r *Request) error { } reqLog := "\n---------------------- REQUEST LOG -----------------------\n" + - fmt.Sprintf("%s %s %s\n", r.Method, rr.URL.RequestURI(), rr.Proto) + - fmt.Sprintf("HOST : %s\n", rr.URL.Host) + - fmt.Sprintf("HEADERS:\n") + - composeHeaders(rl.Header) + "\n" + - fmt.Sprintf("BODY :\n%v\n", rl.Body) + + fmt.Sprintf("%s %s %s\n", r.Method, rr.URL.RequestURI(), rr.Proto) + + fmt.Sprintf("HOST: %s\n", rr.URL.Host) + + fmt.Sprintf("HEADERS:\n%s\n", composeHeaders(rl.Header)) + + fmt.Sprintf("COOKIES:\n%s\n", composeCookies(c.GetClient().Jar, *rr.URL)) + + fmt.Sprintf("BODY:\n%v\n", rl.Body) + "----------------------------------------------------------\n" c.Log.Print(reqLog) diff --git a/util.go b/util.go index 997cd100..7e06b0ba 100644 --- a/util.go +++ b/util.go @@ -14,6 +14,7 @@ import ( "mime/multipart" "net/http" "net/textproto" + "net/url" "os" "path/filepath" "reflect" @@ -255,10 +256,22 @@ func closeq(v interface{}) { func sliently(_ ...interface{}) {} +func composeCookies(jar http.CookieJar, url url.URL) string { + var str []string + for _, k := range jar.Cookies(&url) { + v := strings.TrimSpace(fmt.Sprintf("\t%s: %s", k.Name, k.Value)) + str = append(str, "\t"+v) + } + return strings.Join(str, "\n") +} + func composeHeaders(hdrs http.Header) string { var str []string for _, k := range sortHeaderKeys(hdrs) { - str = append(str, fmt.Sprintf("%25s: %s", k, strings.Join(hdrs[k], ", "))) + v := strings.TrimSpace(fmt.Sprintf("%25s: %s", k, strings.Join(hdrs[k], ", "))) + if v != "" { + str = append(str, "\t"+v) + } } return strings.Join(str, "\n") }