Documentation ¶
Overview ¶
Package httpmitm contains an HTTP client that logs all incoming and outgoing requests.
Example ¶
package main import ( "bytes" "fmt" "net/http" "net/http/httptest" "strings" ) func getBody(s string) (body []string) { pastHeaders := false for _, part := range strings.Split(s, "\r\n") { if pastHeaders { body = append(body, part) } else if part == "" { pastHeaders = true } } return } func main() { // Setup test server. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, Client!")) })) defer ts.Close() // Setup instrumented client. type record struct { o Origin d string } var records []*record client := http.Client{ Transport: &Transport{ Callback: func(o Origin, data []byte, err error) { records = append(records, &record{o, string(data)}) }, }, } _, err := client.Post(ts.URL, "test", bytes.NewBufferString("Hail, Server!")) if err != nil { return } // There should be two records: request and response. for idx, r := range records { fmt.Printf("%d) %s\n", idx, r.o) for _, line := range getBody(r.d) { fmt.Println(line) } } }
Output: 0) Request Hail, Server! 1) Response Hello, Client!
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Callback ¶
Callback is a callback method that is invoked during HTTP communications to forward captured data.
type Origin ¶
type Origin uint
Origin is an enumeration used to annotate which type of data is being fed to the callback.
type Transport ¶
type Transport struct { // Underlying RoundTripper; uses http.DefaultTransport if nil. http.RoundTripper Callback Callback // Output callback. }
Transport is an implementation of http.RoundTripper that logs outgoing requests and incoming responses.
Click to show internal directories.
Click to hide internal directories.