Documentation
¶
Overview ¶
The proxy package 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"
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