Skip to content

Commit

Permalink
Allow ctrl-e->/usr/bin/view in proxy entries
Browse files Browse the repository at this point in the history
  • Loading branch information
denandz committed Dec 10, 2020
1 parent 4509399 commit 8416615
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ ctrl-s | Proxy/Replay - highlighted request/response | Save item to file
g | Proxy | Go to first entry in the proxy table
G | Proxy | Go to last entry in the proxy table
/ | Proxy | Enter a search-filter regex to filter proxy entries by URL
ctrl-e | Proxy - highlighted request/response | Open the request/response data in `view`
ctrl-b | Replay | Create a new blank replay item - useful for assembling requests from scratch
ctrl-e | Replay - highlighted request/response | Edit request in `vi`, responses will open with `view`
ctrl-x | Replay | Rename replay item
Expand Down
51 changes: 51 additions & 0 deletions views/proxyview.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"net/http/httputil"
"net/url"
"os"
"os/exec"
"regexp"
"sort"
"strconv"
Expand Down Expand Up @@ -81,9 +82,34 @@ func (view *ProxyView) Init(app *tview.Application, replayview *ReplayView) {
if entry := view.Logger.GetEntry(id); entry != nil {
saveModal(app, view.Layout, entry.Request.Raw)
}
} else if event.Key() == tcell.KeyCtrlE {
if entry := view.Logger.GetEntry(id); entry != nil {
app.EnableMouse(false)
app.Suspend(func() {
file, err := ioutil.TempFile(os.TempDir(), "glorp")
if err != nil {
log.Println(err)
return
}
defer os.Remove(file.Name())

file.Write(entry.Request.Raw)
file.Close()
cmd := exec.Command("/usr/bin/view", "-b", file.Name())
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Printf("failed to start editor: %v\n", err)
}
})

app.EnableMouse(true)
}
}
return event
})

view.responseBox = tview.NewTextView().SetWrap(false).SetDynamicColors(true)
view.responseBox.SetBorder(true)
view.responseBox.SetTitle("Response")
Expand All @@ -92,7 +118,32 @@ func (view *ProxyView) Init(app *tview.Application, replayview *ReplayView) {
if entry := view.Logger.GetEntry(id); entry != nil {
saveModal(app, view.Layout, entry.Response.Raw)
}
} else if event.Key() == tcell.KeyCtrlE {
if entry := view.Logger.GetEntry(id); entry != nil {
app.EnableMouse(false)
app.Suspend(func() {
file, err := ioutil.TempFile(os.TempDir(), "glorp")
if err != nil {
log.Println(err)
return
}
defer os.Remove(file.Name())

file.Write(entry.Response.Raw)
file.Close()
cmd := exec.Command("/usr/bin/view", "-b", file.Name())
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Printf("failed to start editor: %v\n", err)
}
})

app.EnableMouse(true)
}
}

return event
})

Expand Down

0 comments on commit 8416615

Please sign in to comment.