v0.34.0 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Dec 5, 2018 License: Apache-2.0 Imports: 24 Imported by: 0



Package proxy provides a record/replay HTTP proxy. It is designed to support both an in-memory API ( and a standalone server (



View Source
const LogVersion = "0.1"

LogVersion is the current version of the log format. It can be used to support changes to the format over time, so newer code can read older files.


View Source
var DebugHeaders = false

DebugHeaders helps to determine whether a header should be ignored. When true, if requests have the same method, URL and body but differ in a header, the first mismatched header is logged.


This section is empty.


type Entry added in v0.25.0

type Entry struct {
	ID       string // unique ID
	Request  *Request
	Response *Response

An Entry single request-response pair.

type Log added in v0.25.0

type Log struct {
	Initial []byte // initial data for replay
	Version string // version of this log format
	Entries []*Entry

A Log is a record of HTTP interactions, suitable for replay. It can be serialized to JSON.

type Logger added in v0.25.0

type Logger struct {
	// contains filtered or unexported fields

A Logger maintains a request-response log.

func NewLogger added in v0.25.0

func NewLogger() *Logger

NewLogger creates a new logger.

func (*Logger) Extract added in v0.25.0

func (l *Logger) Extract() *Log

Extract returns the Log and removes it. The Logger is not usable after this call.

func (*Logger) ModifyRequest added in v0.25.0

func (l *Logger) ModifyRequest(req *http.Request) error

ModifyRequest logs requests.

func (*Logger) ModifyResponse added in v0.25.0

func (l *Logger) ModifyResponse(res *http.Response) error

ModifyResponse logs responses.

type Proxy

type Proxy struct {
	// The certificate that the proxy uses to participate in TLS.
	CACert *x509.Certificate

	// The URL of the proxy.
	URL *url.URL

	// Initial state of the client.
	Initial []byte
	// contains filtered or unexported fields

A Proxy is an HTTP proxy that supports recording or replaying requests.

func ForRecording

func ForRecording(filename string, port int) (*Proxy, error)

ForRecording returns a Proxy configured to record.

func ForReplaying

func ForReplaying(filename string, port int) (*Proxy, error)

ForReplaying returns a Proxy configured to replay.

func (*Proxy) Close

func (p *Proxy) Close() error

Close closes the proxy. If the proxy is recording, it also writes the log.

func (*Proxy) IgnoreHeader added in v0.25.0

func (p *Proxy) IgnoreHeader(h string)

IgnoreHeader will cause h to be ignored during matching on replay.

func (*Proxy) Transport

func (p *Proxy) Transport() *http.Transport

Transport returns an http.Transport for clients who want to talk to the proxy.

type Request added in v0.25.0

type Request struct {
	Method  string      // http.Request.Method
	URL     string      // http.Request.URL, as a string
	Proto   string      // http.Request.Proto
	Header  http.Header // http.Request.Header
	Body    []byte      // http.Request.Body, read to completion
	Trailer http.Header `json:",omitempty"` // http.Request.Trailer

A Request represents an http.Request in the log.

type Response added in v0.25.0

type Response struct {
	StatusCode int         // http.Response.StatusCode
	Proto      string      // http.Response.Proto
	ProtoMajor int         // http.Response.ProtoMajor
	ProtoMinor int         // http.Response.ProtoMinor
	Header     http.Header // http.Response.Header
	Body       []byte      // http.Response.Body, read to completion
	Trailer    http.Header `json:",omitempty"` // http.Response.Trailer

A Response represents an http.Response in the log.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL