Skip to content

Instantly share code, notes, and snippets.

@fd0
Created May 29, 2017 22:31
Show Gist options
  • Save fd0/568ca00f9ce46897a201fb462c815662 to your computer and use it in GitHub Desktop.
Save fd0/568ca00f9ce46897a201fb462c815662 to your computer and use it in GitHub Desktop.
package base
import (
"fmt"
"net/http"
"net/http/httputil"
"os"
)
func init() {
defaultTransport := http.DefaultClient.Transport
if defaultTransport == nil {
defaultTransport = http.DefaultTransport
}
http.DefaultClient.Transport = loggingRoundTripper{defaultTransport}
}
type loggingRoundTripper struct {
http.RoundTripper
}
func (tr loggingRoundTripper) RoundTrip(req *http.Request) (res *http.Response, err error) {
trace, err := httputil.DumpRequestOut(req, false)
if err != nil {
fmt.Fprintf(os.Stderr, "DumpRequestOut() error: %v\n", err)
} else {
fmt.Fprintf(os.Stderr, "------------ HTTP REQUEST -----------\n%s", trace)
}
res, err = tr.RoundTripper.RoundTrip(req)
if err != nil {
fmt.Fprintf(os.Stderr, "RoundTrip() returned error: %v", err)
}
if res != nil {
trace, err := httputil.DumpResponse(res, false)
if err != nil {
fmt.Fprintf(os.Stderr, "DumpResponse() error: %v\n", err)
} else {
fmt.Fprintf(os.Stderr, "------------ HTTP RESPONSE ----------\n%s", trace)
}
}
return res, err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment