Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package proxy provides a record/replay HTTP proxy. It is designed to support both an in-memory API (cloud.google.com/go/httpreplay) and a standalone server (cloud.google.com/go/httpreplay/cmd/httpr).
Index ¶
Constants ¶
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.
Variables ¶
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.
Functions ¶
This section is empty.
Types ¶
type Entry ¶ added in v0.25.0
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 (*Logger) Extract ¶ added in v0.25.0
Extract returns the Log and removes it. The Logger is not usable after this call.
func (*Logger) ModifyRequest ¶ added in v0.25.0
ModifyRequest logs requests.
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 ¶
ForRecording returns a Proxy configured to record.
func ForReplaying ¶
ForReplaying returns a Proxy configured to replay.
func (*Proxy) Close ¶
Close closes the proxy. If the proxy is recording, it also writes the log.
func (*Proxy) IgnoreHeader ¶ added in v0.25.0
IgnoreHeader will cause h to be ignored during matching on replay.
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.
      
      Source Files
      ¶
    
- debug.go
 - log.go
 - record.go
 - replay.go