httpreplay

package module
v0.1.2-0...-36b1096 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2020 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package httpreplay provides an API for recording and replaying traffic from HTTP-based clients.

To record:

  1. Call NewRecorder to get a Recorder.
  2. Use its Client method to obtain an HTTP client to use when making API calls.
  3. Close the Recorder when you're done. That will save the log of interactions to the file you provided to NewRecorder.

To replay:

  1. Call NewReplayer with the same filename you used to record to get a Replayer.
  2. Call its Client method and use the client to make the same API calls. You will get back the recorded responses.
  3. Close the Replayer when you're done.

Although it has some features specific to Google HTTP APIs, this package can be used more generally.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DebugHeaders

func DebugHeaders()

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.

Types

type Recorder

type Recorder struct {
	// contains filtered or unexported fields
}

A Recorder records HTTP interactions.

func NewRecorder

func NewRecorder(filename string, initial []byte) (*Recorder, error)

NewRecorder creates a recorder that writes to filename. The file will also store initial state that can be retrieved to configure replay.

You must call Close on the Recorder to ensure that all data is written.

func (*Recorder) ClearHeaders

func (r *Recorder) ClearHeaders(patterns ...string)

ClearHeaders will replace the value of request and response headers that match any of the patterns with CLEARED, on both recording and replay. Use ClearHeaders when the header information is secret or may change from run to run, but you still want to verify that the headers are being sent and received.

Pattern is taken literally except for *, which matches any sequence of characters.

func (*Recorder) ClearQueryParams

func (r *Recorder) ClearQueryParams(patterns ...string)

ClearQueryParams will replace the value of URL query parametrs that match any of the patterns with CLEARED, on both recording and replay. Use ClearQueryParams when the parameter information is secret or may change from run to run, but you still want to verify that it are being sent.

Pattern is taken literally except for *, which matches any sequence of characters.

func (*Recorder) Client

func (r *Recorder) Client() *http.Client

Client returns an http.Client to be used for recording.

func (*Recorder) Close

func (r *Recorder) Close() error

Close closes the Recorder and saves the log file.

Since Close writes a file, you should always check that it returns a non-nil error.

func (*Recorder) RemoveQueryParams

func (r *Recorder) RemoveQueryParams(patterns ...string)

RemoveQueryParams will remove URL query parameters matching patterns from the log, and skip matching them during replay.

Pattern is taken literally except for *, which matches any sequence of characters.

func (*Recorder) RemoveRequestHeaders

func (r *Recorder) RemoveRequestHeaders(patterns ...string)

RemoveRequestHeaders will remove request headers matching patterns from the log, and skip matching them during replay.

Pattern is taken literally except for *, which matches any sequence of characters.

type Replayer

type Replayer struct {
	// contains filtered or unexported fields
}

A Replayer replays previously recorded HTTP interactions.

func NewReplayer

func NewReplayer(filename string) (*Replayer, error)

NewReplayer creates a replayer that reads from filename.

func (*Replayer) Client

func (r *Replayer) Client() *http.Client

Client returns an HTTP client for replaying.

The client does not need to be configured with credentials for authenticating to a server, since it never contacts a real backend.

func (*Replayer) Close

func (r *Replayer) Close() error

Close closes the replayer.

func (*Replayer) IgnoreHeader

func (r *Replayer) IgnoreHeader(h string)

IgnoreHeader will not use h when matching requests.

func (*Replayer) Initial

func (r *Replayer) Initial() []byte

Initial returns the initial state saved by the Recorder.

Directories

Path Synopsis
cmd
Package google provides a way to obtain an http.Client for Google Cloud Platform APIs.
Package google provides a way to obtain an http.Client for Google Cloud Platform APIs.
internal
proxy
Package proxy provides a record/replay HTTP proxy.
Package proxy provides a record/replay HTTP proxy.

Jump to

Keyboard shortcuts

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