Documentation
¶
Overview ¶
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.
Source Files
¶
- httpmitm.go
Click to show internal directories.
Click to hide internal directories.