|
|
|
@ -12,11 +12,14 @@ import (
|
|
|
|
|
"regexp"
|
|
|
|
|
"sort"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/jroimartin/gocui"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var CLIENT *http.Client = &http.Client{}
|
|
|
|
|
var CLIENT *http.Client = &http.Client{
|
|
|
|
|
Timeout: time.Duration(5 * time.Second),
|
|
|
|
|
}
|
|
|
|
|
var TRANSPORT *http.Transport = &http.Transport{}
|
|
|
|
|
|
|
|
|
|
var VIEWS []string = []string{
|
|
|
|
@ -178,17 +181,18 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error {
|
|
|
|
|
vrh.Clear()
|
|
|
|
|
popup(g, "Sending request..")
|
|
|
|
|
|
|
|
|
|
go g.Execute(func(g *gocui.Gui) error {
|
|
|
|
|
go func(g *gocui.Gui) error {
|
|
|
|
|
defer g.DeleteView("popup")
|
|
|
|
|
// get views
|
|
|
|
|
vrb, _ := g.View("response-body")
|
|
|
|
|
vrh, _ := g.View("response-headers")
|
|
|
|
|
// parse url
|
|
|
|
|
base_url := getViewValue(g, "url")
|
|
|
|
|
u, err := url.Parse(base_url)
|
|
|
|
|
if err != nil {
|
|
|
|
|
g.Execute(func(g *gocui.Gui) error {
|
|
|
|
|
vrb, _ := g.View("response-body")
|
|
|
|
|
fmt.Fprintf(vrb, "URL parse error: %v", err)
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
u.RawQuery = strings.Replace(getViewValue(g, "get"), "\n", "&", -1)
|
|
|
|
|
|
|
|
|
@ -204,8 +208,12 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error {
|
|
|
|
|
// create request
|
|
|
|
|
req, err := http.NewRequest(method, u.String(), data)
|
|
|
|
|
if err != nil {
|
|
|
|
|
g.Execute(func(g *gocui.Gui) error {
|
|
|
|
|
vrb, _ := g.View("response-body")
|
|
|
|
|
fmt.Fprintf(vrb, "Request error: %v", err)
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// set headers
|
|
|
|
@ -222,8 +230,12 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error {
|
|
|
|
|
// do request
|
|
|
|
|
response, err := CLIENT.Do(req)
|
|
|
|
|
if err != nil {
|
|
|
|
|
g.Execute(func(g *gocui.Gui) error {
|
|
|
|
|
vrb, _ := g.View("response-body")
|
|
|
|
|
fmt.Fprintf(vrb, "Response error: %v", err)
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
defer response.Body.Close()
|
|
|
|
|
|
|
|
|
@ -234,6 +246,9 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error {
|
|
|
|
|
a.rawResponseBody = bodyBytes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g.Execute(func(g *gocui.Gui) error {
|
|
|
|
|
vrh, _ := g.View("response-headers")
|
|
|
|
|
|
|
|
|
|
a.PrintBody(g)
|
|
|
|
|
|
|
|
|
|
// print status code and sorted headers
|
|
|
|
@ -257,6 +272,8 @@ func (a *App) SubmitRequest(g *gocui.Gui, _ *gocui.View) error {
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
}(g)
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|