proxy

package
v0.30.0 Latest Latest
Warning

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

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

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

View Source
const LogVersion = "0.1"

Variables

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.

Functions

This section is empty.

Types

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