HTTP Agent for go programming language. Provides hooks, timeout, and default header for http.Client and any other similar interface.
agent := httpagent.NewAgent(http.DefaultClient)
agent.DefaultTimeout = 10 * time.Second
agent.DefaultHeader.Set("User-Agent", "go-httpagent/0.1")
agent.RequestHooks.Append(&httpagent.RequestDumperHook{Writer: os.Stderr})
agent.ResponseHooks.Append(&httpagent.ResponseDumperHook{Writer: os.Stderr})
req, _ := http.NewRequest("GET", "https://karupas.org/", nil)
ctx := context.Background()
req = req.WithContext(req)
res, err := agent.Do(req)