Back to

package httpmitm

v0.0.0 (5e745f7)
Latest Go to latest
Published: 0 hours ago | License: Apache-2.0 | Module:




// 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 {

// 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) {


0) Request
Hail, Server!
1) Response
Hello, Client!



type Callback

type Callback func(Origin, []byte, error)

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.

const (
	Request Origin = iota

Log transport types.

func (Origin) String

func (t Origin) String() string

String converts a Origin to a user-friendly string.

type Transport

type Transport struct {
	// Underlying RoundTripper; uses http.DefaultTransport if nil.

	Callback Callback // Output callback.

Transport is an implementation of http.RoundTripper that logs outgoing requests and incoming responses.

func (*Transport) RoundTrip

func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip implements the http.RoundTripper interface.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
f or F : Jump to identifier