http

package module
v0.0.0-...-580bfa9 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HasContentType

func HasContentType(r *http.Request, mimetypes ...string) bool

HasContentType determines whether the request `content-type` includes a server-acceptable mime-type

Failure should yield an HTTP 415 (`http.StatusUnsupportedMediaType`)

func MustNewRequest

func MustNewRequest(method, url string, body io.Reader, contentType string) *http.Request

MustNewRequest returns a new *http.Request or fatals.

func NewRequestForm

func NewRequestForm(method, url string, data url.Values) (*http.Request, error)

NewRequestForm returns a new POST Form *http.Request.

func NewRequestJSON

func NewRequestJSON(method, url string, data interface{}) (*http.Request, error)

NewRequestJSON returns a new JSON *http.Request.

func NewResilientClientLatencyToleranceConfigurable

func NewResilientClientLatencyToleranceConfigurable(rt http.RoundTripper, timeout time.Duration, backOffDieAfter time.Duration) *http.Client

NewResilientClientLatencyToleranceConfigurable creates a new http.Client for environments with configurable latency tolerance. If transport is set (not nil) it will be wrapped by NewDefaultResilientRoundTripper.

func NewResilientClientLatencyToleranceExtreme

func NewResilientClientLatencyToleranceExtreme(rt http.RoundTripper) *http.Client

NewResilientClientLatencyToleranceExtreme creates a new http.Client for environments with extreme latency tolerance. If transport is set (not nil) it will be wrapped by NewDefaultResilientRoundTripper. The client will stop requests after 30 minutes.

func NewResilientClientLatencyToleranceHigh

func NewResilientClientLatencyToleranceHigh(rt http.RoundTripper) *http.Client

NewResilientClientLatencyToleranceHigh creates a new http.Client for environments with high latency tolerance. If transport is set (not nil) it will be wrapped by NewDefaultResilientRoundTripper. The client will stop requests after 15 seconds.

func NewResilientClientLatencyToleranceMedium

func NewResilientClientLatencyToleranceMedium(rt http.RoundTripper) *http.Client

NewResilientClientLatencyToleranceMedium creates a new http.Client for environments with medium latency tolerance. If transport is set (not nil) it will be wrapped by NewDefaultResilientRoundTripper. The client will stop requests after 5 seconds.

func NewResilientClientLatencyToleranceSmall

func NewResilientClientLatencyToleranceSmall(rt http.RoundTripper) *http.Client

NewResilientClientLatencyToleranceSmall creates a new http.Client for environments with small latency tolerance. If transport is set (not nil) it will be wrapped by NewDefaultResilientRoundTripper.

Types

type CompressionRequestReader

type CompressionRequestReader struct {
	ErrHandler func(w http.ResponseWriter, r *http.Request, err error)
}

func NewCompressionRequestReader

func NewCompressionRequestReader(eh func(w http.ResponseWriter, r *http.Request, err error)) *CompressionRequestReader

func (*CompressionRequestReader) ServeHTTP

type ResilientRoundTripper

type ResilientRoundTripper struct {
	// RoundTripper the wrapped RoundTripper.
	http.RoundTripper

	// ShouldRetry defines a strategy for retries.
	ShouldRetry RetryPolicy

	MaxInterval    time.Duration
	MaxElapsedTime time.Duration
}

ResilientRoundTripper wraps a RoundTripper and retries requests on failure.

func NewDefaultResilientRoundTripper

func NewDefaultResilientRoundTripper(
	backOffMaxInterval time.Duration,
	backOffDieAfter time.Duration,
) *ResilientRoundTripper

NewDefaultResilientRoundTripper returns a new ResilientRoundTripper with defaults.

func NewResilientRoundTripper

func NewResilientRoundTripper(
	roundTripper http.RoundTripper,
	backOffMaxInterval time.Duration,
	backOffDieAfter time.Duration,
) *ResilientRoundTripper

NewResilientRoundTripper returns a new ResilientRoundTripper.

func (*ResilientRoundTripper) RoundTrip

func (rt *ResilientRoundTripper) RoundTrip(r *http.Request) (*http.Response, error)

RoundTrip executes a single HTTP transaction, returning a Response for the provided Request.

func (*ResilientRoundTripper) WithShouldRetry

func (rt *ResilientRoundTripper) WithShouldRetry(policy RetryPolicy) *ResilientRoundTripper

WithShouldRetry sets a RetryPolicy.

type RetryPolicy

type RetryPolicy func(*http.Response, error) (retry bool)

RetryPolicy returns true if the request should be retried.

func LoggedShouldRetry

func LoggedShouldRetry(l *logrusx.Logger) RetryPolicy

LoggedShouldRetry returns a RetryPolicy that logs erros.

Jump to

Keyboard shortcuts

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