proxy

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: May 24, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetSessionSecret added in v1.6.0

func GetSessionSecret(deviceName, key, baseURL string) (string, error)

GetSessionSecret creates a session and returns the webhook signing secret.

Types

type Config

type Config struct {
	// DeviceName is the name of the device sent to Stripe to help identify the device
	DeviceName string
	// Key is the API key used to authenticate with Stripe
	Key string
	// URL to which requests are sent
	APIBaseURL string

	// URL to which events are forwarded to
	ForwardURL string
	// Headers to inject when forwarding events
	ForwardHeaders []string
	// URL to which Connect events are forwarded to
	ForwardConnectURL string
	// Headers to inject when forwarding Connect events
	ForwardConnectHeaders []string
	// UseConfiguredWebhooks loads webhooks config from user's account
	UseConfiguredWebhooks bool

	// EndpointsRoutes is a mapping of local webhook endpoint urls to the events they consume
	EndpointRoutes []EndpointRoute
	// List of events to listen and proxy
	Events []string

	// WebSocketFeature is the feature specified for the websocket connection
	WebSocketFeature string
	// Indicates whether to print full JSON objects to stdout
	PrintJSON bool

	// Specifies the format to print to stdout.
	Format string

	// Indicates whether to filter events formatted with the default or latest API version
	UseLatestAPIVersion bool
	// Indicates whether to skip certificate verification when forwarding webhooks to HTTPS endpoints
	SkipVerify bool
	// The logger used to log messages to stdin/err
	Log *log.Logger
	// Force use of unencrypted ws:// protocol instead of wss://
	NoWSS bool

	// OutCh is the channel to send logs and statuses to for processing in other packages
	OutCh chan websocket.IElement
}

Config provides the configuration of a Proxy

type EndpointClient added in v0.2.6

type EndpointClient struct {
	// URL the client sends POST requests to
	URL string
	// contains filtered or unexported fields
}

EndpointClient is the client used to POST webhook requests to the local endpoint.

func NewEndpointClient added in v0.2.6

func NewEndpointClient(url string, headers []string, connect bool, events []string, cfg *EndpointConfig) *EndpointClient

NewEndpointClient returns a new EndpointClient.

func (*EndpointClient) Post added in v0.2.6

func (c *EndpointClient) Post(evtCtx eventContext, body string, headers map[string]string) error

Post sends a message to the local endpoint.

func (*EndpointClient) SupportsEventType added in v0.2.6

func (c *EndpointClient) SupportsEventType(connect bool, eventType string) bool

SupportsEventType takes an event of a webhook and compares it to the internal list of supported events

type EndpointConfig added in v0.2.6

type EndpointConfig struct {
	HTTPClient *http.Client

	Log *log.Logger

	ResponseHandler EndpointResponseHandler

	// OutCh is the channel to send data and statuses to for processing in other packages
	OutCh chan websocket.IElement
}

EndpointConfig contains the optional configuration parameters of an EndpointClient.

type EndpointResponse added in v1.6.0

type EndpointResponse struct {
	Event    *StripeEvent
	Resp     *http.Response
	RespBody string
}

EndpointResponse describes the response to a Stripe event from an endpoint

type EndpointResponseHandler added in v0.2.6

type EndpointResponseHandler interface {
	ProcessResponse(eventContext, string, *http.Response)
}

EndpointResponseHandler handles a response from the endpoint.

type EndpointResponseHandlerFunc added in v0.2.6

type EndpointResponseHandlerFunc func(eventContext, string, *http.Response)

EndpointResponseHandlerFunc is an adapter to allow the use of ordinary functions as response handlers. If f is a function with the appropriate signature, ResponseHandler(f) is a ResponseHandler that calls f.

func (EndpointResponseHandlerFunc) ProcessResponse added in v0.2.6

func (f EndpointResponseHandlerFunc) ProcessResponse(evtCtx eventContext, forwardURL string, resp *http.Response)

ProcessResponse calls f(evtCtx, forwardURL, resp).

type EndpointRoute added in v0.2.6

type EndpointRoute struct {
	// URL is the endpoint's URL.
	URL string

	// Headers to forward to endpoints
	ForwardHeaders []string

	// Connect indicates whether the endpoint should receive normal (when false) or Connect (when true) events.
	Connect bool

	// EventTypes is the list of event types that should be sent to the endpoint.
	EventTypes []string
}

EndpointRoute describes a local endpoint's routing configuration.

type FailedToPostError added in v1.6.0

type FailedToPostError struct {
	Err error
}

FailedToPostError describes a failure to send a POST request to an endpoint

func (FailedToPostError) Error added in v1.6.0

func (f FailedToPostError) Error() string

type FailedToReadResponseError added in v1.6.0

type FailedToReadResponseError struct {
	Err error
}

FailedToReadResponseError describes a failure to read the response from an endpoint

func (FailedToReadResponseError) Error added in v1.6.0

type Proxy

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

A Proxy opens a websocket connection with Stripe, listens for incoming webhook events, forwards them to the local endpoint and sends the response back to Stripe.

func Init added in v1.6.0

func Init(cfg *Config) (*Proxy, error)

Init initializes a new Proxy

func (*Proxy) Run

func (p *Proxy) Run(ctx context.Context) error

Run sets the websocket connection and starts the Goroutines to forward incoming events to the local endpoint.

type StripeEvent added in v1.6.0

type StripeEvent struct {
	Account         string                 `json:"account"`
	APIVersion      string                 `json:"api_version"`
	Created         int                    `json:"created"`
	Data            map[string]interface{} `json:"data"`
	ID              string                 `json:"id"`
	Livemode        bool                   `json:"livemode"`
	Request         StripeRequestData      `json:"request"`
	PendingWebhooks int                    `json:"pending_webhooks"`
	Type            string                 `json:"type"`
}

StripeEvent is a representation of a Stripe `event` object

func (*StripeEvent) IsConnect added in v1.6.0

func (e *StripeEvent) IsConnect() bool

IsConnect return true or false if *StripeEvent is connect or not.

func (*StripeEvent) URLForEventID added in v1.6.0

func (e *StripeEvent) URLForEventID() string

URLForEventID builds a full URL from a StripeEvent ID.

func (*StripeEvent) URLForEventType added in v1.6.0

func (e *StripeEvent) URLForEventType() string

URLForEventType builds a full URL from a StripeEvent Type.

type StripeRequestData added in v1.6.0

type StripeRequestData struct {
	ID             string `json:"id"`
	IdempotencyKey string `json:"idempotency_key"`
}

StripeRequestData is a representation of the Request field in a Stripe `event` object

Jump to

Keyboard shortcuts

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