maniphttp

package
v1.121.0 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2020 License: Apache-2.0 Imports: 27 Imported by: 20

Documentation

Overview

Package maniphttp provides a ReST backed Manipulator.

This is meant to be use to communicate with Bahamut based API servers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DirectSend added in v1.60.0

func DirectSend(manipulator manipulate.Manipulator, mctx manipulate.Context, endpoint string, method string, body []byte) (*http.Response, error)

DirectSend allows to send direct bytes using the given manipulator. This is only useful in extremely particular scenario, like fuzzing. Note: the given manipulator must be an HTTP Manipulator or it will panic.

func ExtractCredentials

func ExtractCredentials(manipulator manipulate.Manipulator) (string, string)

ExtractCredentials extracts the username and password from the given manipulator. Note: the given manipulator must be an HTTP Manipulator or it will return an error.

func ExtractEncoding

func ExtractEncoding(manipulator manipulate.Manipulator) elemental.EncodingType

ExtractEncoding returns the encoding used by the given manipulator. Note: the given manipulator must be an HTTP Manipulator or it will panic.

func ExtractEndpoint

func ExtractEndpoint(manipulator manipulate.Manipulator) string

ExtractEndpoint extracts the endpoint url from the given manipulator. Note: the given manipulator must be an HTTP Manipulator or it will panic.

func ExtractNamespace

func ExtractNamespace(manipulator manipulate.Manipulator) string

ExtractNamespace extracts the default namespace from the given manipulator. Note: the given manipulator must be an HTTP Manipulator or it will panic.

func ExtractTLSConfig

func ExtractTLSConfig(manipulator manipulate.Manipulator) *tls.Config

ExtractTLSConfig returns a copy of the tls config from the given manipulator. Note: the given manipulator must be an HTTP Manipulator or it will panic.

func New

func New(ctx context.Context, url string, options ...Option) (manipulate.Manipulator, error)

New returns a maniphttp.Manipulator configured according to the given suite of Option.

func NewSubscriber

func NewSubscriber(manipulator manipulate.Manipulator, options ...SubscriberOption) manipulate.Subscriber

NewSubscriber returns a new subscription.

func NewSubscriberWithEndpoint

func NewSubscriberWithEndpoint(manipulator manipulate.Manipulator, endpoint string, recursive bool) manipulate.Subscriber

NewSubscriberWithEndpoint returns a new subscription connecting to specific endpoint.

func SetGlobalHeaders

func SetGlobalHeaders(manipulator manipulate.Manipulator, headers http.Header)

SetGlobalHeaders sets the given headers to all requests that will be sent. Note: the given manipulator must be an HTTP Manipulator or it will panic.

Types

type Option

type Option func(*httpManipulator)

An Option represents a maniphttp.Manipulator option.

func OptionAdditonalHeaders

func OptionAdditonalHeaders(headers http.Header) Option

OptionAdditonalHeaders sets the additional http.Header that will be sent.

func OptionCredentials

func OptionCredentials(username, password string) Option

OptionCredentials sets the username and password to use for authentication.

func OptionDefaultRetryFunc added in v1.61.0

func OptionDefaultRetryFunc(f manipulate.RetryFunc) Option

OptionDefaultRetryFunc sets the default retry func to use if manipulate.Context does not have one.

func OptionDisableBuiltInRetry

func OptionDisableBuiltInRetry() Option

OptionDisableBuiltInRetry disables the auto retry mechanism built in maniphttp Manipulator. By default, the manipulator will silently retry on communication error 3 times after 1s, 2s, and 3s.

func OptionDisableCompression added in v1.61.0

func OptionDisableCompression() Option

OptionDisableCompression disables the gzip compression in http transport. This only has effect if you don't set a custom transport.

func OptionEncoding

func OptionEncoding(enc elemental.EncodingType) Option

OptionEncoding sets the encoding/decoding type to use.

func OptionHTTPClient

func OptionHTTPClient(client *http.Client) Option

OptionHTTPClient sets internal full *http.Client.

If you use this option you are responsible for configuring the *http.Transport and transport's *tls.Config). OptionHTTPTransport or OptionTLSConfig will have no effect if you use this option.

func OptionHTTPTransport

func OptionHTTPTransport(transport *http.Transport) Option

OptionHTTPTransport sets internal *http.Transport.

If you use this option you are responsible for configuring the *tls.Config. OptionTLSConfig will have no effect if you use this option.

func OptionNamespace

func OptionNamespace(ns string) Option

OptionNamespace sets the namespace.

func OptionSendCredentialsAsCookie added in v1.120.0

func OptionSendCredentialsAsCookie(key string) Option

OptionSendCredentialsAsCookie configures the manipulator to send the password as a cookie using the provided key.

func OptionSimulateFailures added in v1.91.0

func OptionSimulateFailures(failureSimulations map[float64]error) Option

OptionSimulateFailures will inject random error during low level communication with the remote API.

The key of the map is a float between 0 and 1 that will give the percentage of chance for simulating the failure, and error it should return.

For instance, take the following map:

map[float64]error{
    0.10: manipulate.NewErrCannotBuildQuery("oh no"),
    0.25: manipulate.NewErrCannotCommunicate("service is gone"),
}

It will return manipulate.NewErrCannotBuildQuery around 10% of the requests, manipulate.NewErrCannotCommunicate around 25% of the requests. This is obviously designed for simulating backend failures and should not be used in production, obviously.

func OptionTCPUserTimeout added in v1.121.0

func OptionTCPUserTimeout(t time.Duration) Option

OptionTCPUserTimeout configures the manipulator to have a custom tcp user timeout.

func OptionTLSConfig

func OptionTLSConfig(tlsConfig *tls.Config) Option

OptionTLSConfig sets the tls.Config to use for the manipulator.

func OptionToken

func OptionToken(token string) Option

OptionToken sets JWT token. If you use for authentication.

If you also use OptionCredentials or OptionTokenManager, the last one will take precedence.

func OptionTokenManager

func OptionTokenManager(tokenManager manipulate.TokenManager) Option

OptionTokenManager sets manipulate.TokenManager to handle token auto renewal.

If you also use OptionCredentials or OptionToken, the last one will take precedence.

type RetryInfo added in v1.61.0

type RetryInfo struct {
	URL    string
	Method string
	// contains filtered or unexported fields
}

A RetryInfo contains information about a retry,

func (RetryInfo) Context added in v1.61.0

func (i RetryInfo) Context() manipulate.Context

Context returns the manipulate.Context used.

func (RetryInfo) Err added in v1.61.0

func (i RetryInfo) Err() error

Err returns the error that caused the retry.

func (RetryInfo) Try added in v1.61.0

func (i RetryInfo) Try() int

Try returns the try number.

type SubscriberOption

type SubscriberOption func(*subscribeConfig)

SubscriberOption represents option to NewSubscriber.

func SubscriberOptionEndpoint

func SubscriberOptionEndpoint(endpoint string) SubscriberOption

SubscriberOptionEndpoint sets the endpint to connect to. By default it is /events.

func SubscriberOptionNamespace

func SubscriberOptionNamespace(namespace string) SubscriberOption

SubscriberOptionNamespace sets the namespace from where the subscription should start. By default it is the same as the manipulator.

func SubscriberOptionRecursive

func SubscriberOptionRecursive(recursive bool) SubscriberOption

SubscriberOptionRecursive makes the subscriber to listen to events in current namespace and all children.

func SubscriberOptionSupportErrorEvents added in v1.120.0

func SubscriberOptionSupportErrorEvents() SubscriberOption

SubscriberOptionSupportErrorEvents will result in connecting to the socket server by declaring that you are capable of handling error events.

func SubscriberSendCredentialsAsCookie added in v1.120.0

func SubscriberSendCredentialsAsCookie(key string) SubscriberOption

SubscriberSendCredentialsAsCookie makes the subscriber send the crendentials as cookie using the provided key

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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