Documentation ¶
Index ¶
- func HasContentType(r *http.Request, mimetypes ...string) bool
- func MustNewRequest(method, url string, body io.Reader, contentType string) *http.Request
- func NewRequestForm(method, url string, data url.Values) (*http.Request, error)
- func NewRequestJSON(method, url string, data interface{}) (*http.Request, error)
- func NewResilientClientLatencyToleranceConfigurable(rt http.RoundTripper, timeout time.Duration, backOffDieAfter time.Duration) *http.Client
- func NewResilientClientLatencyToleranceExtreme(rt http.RoundTripper) *http.Client
- func NewResilientClientLatencyToleranceHigh(rt http.RoundTripper) *http.Client
- func NewResilientClientLatencyToleranceMedium(rt http.RoundTripper) *http.Client
- func NewResilientClientLatencyToleranceSmall(rt http.RoundTripper) *http.Client
- type CompressionRequestReader
- type ResilientRoundTripper
- type RetryPolicy
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HasContentType ¶
HasContentType determines whether the request `content-type` includes a server-acceptable mime-type
Failure should yield an HTTP 415 (`http.StatusUnsupportedMediaType`)
func MustNewRequest ¶
MustNewRequest returns a new *http.Request or fatals.
func NewRequestForm ¶
NewRequestForm returns a new POST Form *http.Request.
func NewRequestJSON ¶
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 ¶
func (c *CompressionRequestReader) ServeHTTP(w http.ResponseWriter, r *http.Request, next http.HandlerFunc)
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 ¶
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 ¶
RetryPolicy returns true if the request should be retried.
func LoggedShouldRetry ¶
func LoggedShouldRetry(l *logrusx.Logger) RetryPolicy
LoggedShouldRetry returns a RetryPolicy that logs erros.