From 752c5de7940dc69948726f600dbecc67b59eb132 Mon Sep 17 00:00:00 2001 From: Mihai Todor Date: Wed, 3 Oct 2018 14:47:24 +0100 Subject: [PATCH 1/3] Implement support for HTTP trailers --- wuzz.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/wuzz.go b/wuzz.go index c16daf1..3f986a6 100644 --- a/wuzz.go +++ b/wuzz.go @@ -715,6 +715,21 @@ func showAutocomplete(completions []string, left, top, maxWidth, maxHeight int, } } +func extractSortedHeaders(h http.Header) string { + hkeys := make([]string, 0, len(h)) + for hname := range h { + hkeys = append(hkeys, hname) + } + sort.Strings(hkeys) + + var header_str string + for _, hname := range hkeys { + header_str += fmt.Sprintf("\x1b[0;33m%v:\x1b[0;0m %v\n", hname, strings.Join(h[hname], ",")) + } + + return header_str +} + func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error { vrb, _ := g.View(RESPONSE_BODY_VIEW) vrb.Clear() @@ -896,12 +911,7 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error { a.PrintBody(g) - // print status code and sorted headers - hkeys := make([]string, 0, len(response.Header)) - for hname := range response.Header { - hkeys = append(hkeys, hname) - } - sort.Strings(hkeys) + // print status code status_color := 32 if response.StatusCode != 200 { status_color = 31 @@ -912,9 +922,13 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error { response.StatusCode, http.StatusText(response.StatusCode), ) - for _, hname := range hkeys { - header_str += fmt.Sprintf("\x1b[0;33m%v:\x1b[0;0m %v\n", hname, strings.Join(response.Header[hname], ",")) - } + + // print sorted headers + header_str += extractSortedHeaders(response.Header) + + // print sorted trailers + header_str += extractSortedHeaders(response.Trailer) + fmt.Fprint(vrh, header_str) if _, err := vrh.Line(0); err != nil { vrh.SetOrigin(0, 0) From 9a03b811fd03acb4282f484bc3844ef62f7ed979 Mon Sep 17 00:00:00 2001 From: Mihai Todor Date: Wed, 3 Oct 2018 14:59:21 +0100 Subject: [PATCH 2/3] Refactor header support to use strings.Builder --- wuzz.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/wuzz.go b/wuzz.go index 3f986a6..77a7383 100644 --- a/wuzz.go +++ b/wuzz.go @@ -715,19 +715,17 @@ func showAutocomplete(completions []string, left, top, maxWidth, maxHeight int, } } -func extractSortedHeaders(h http.Header) string { +func writeSortedHeaders(output io.Writer, h http.Header) { hkeys := make([]string, 0, len(h)) for hname := range h { hkeys = append(hkeys, hname) } + sort.Strings(hkeys) - var header_str string for _, hname := range hkeys { - header_str += fmt.Sprintf("\x1b[0;33m%v:\x1b[0;0m %v\n", hname, strings.Join(h[hname], ",")) + fmt.Fprintf(output, "\x1b[0;33m%v:\x1b[0;0m %v\n", hname, strings.Join(h[hname], ",")) } - - return header_str } func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error { @@ -916,24 +914,28 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error { if response.StatusCode != 200 { status_color = 31 } - header_str := fmt.Sprintf( + header := &strings.Builder{} + fmt.Fprintf( + header, "\x1b[0;%dmHTTP/1.1 %v %v\x1b[0;0m\n", status_color, response.StatusCode, http.StatusText(response.StatusCode), ) - // print sorted headers - header_str += extractSortedHeaders(response.Header) + writeSortedHeaders(header, response.Header) - // print sorted trailers - header_str += extractSortedHeaders(response.Trailer) + // According to the Go documentation, the Trailer maps trailer + // keys to values in the same format as Header + writeSortedHeaders(header, response.Trailer) - fmt.Fprint(vrh, header_str) + r.ResponseHeaders = header.String() + + fmt.Fprint(vrh, r.ResponseHeaders) if _, err := vrh.Line(0); err != nil { vrh.SetOrigin(0, 0) } - r.ResponseHeaders = header_str + return nil }) return nil From 049f1dd5dcffe1422b2689878196240de9d2c2ad Mon Sep 17 00:00:00 2001 From: Mihai Todor Date: Wed, 3 Oct 2018 15:50:40 +0100 Subject: [PATCH 3/3] Upgrade minimum required Go version --- .travis.yml | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 69dedd0..d6851f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: go go: - - 1.7.5 - - 1.8.3 + - 1.10.x + - tip os: - linux # remove osx, getting vm from travis is extremely slow diff --git a/README.md b/README.md index 26d15ca..473bbd9 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ $ go get github.com/asciimoo/wuzz $ "$GOPATH/bin/wuzz" --help ``` -Note: golang >= 1.7 required. +Note: golang >= 1.10 required. [Binary releases](https://github.com/asciimoo/wuzz/releases) are also available.