helpers

package
v0.0.0-...-32f485c Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package helpers provides building blocks for routegen configs. These helpers are shared across multiple RouteGenerators.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MaybeAddDeadlines

func MaybeAddDeadlines(c *RouteDeadlineConfiger, routeAction *routepb.RouteAction, deadline time.Duration, isStreaming bool)

MaybeAddDeadlines adds the generated deadline config to the route action.

func MaybeAddHSTSHeader

func MaybeAddHSTSHeader(c *RouteHSTSConfiger, route *routepb.Route)

MaybeAddHSTSHeader adds the generated HSTS config to the route.

func MaybeAddOperationNameHeader

func MaybeAddOperationNameHeader(c *RouteOperationNameConfiger, route *routepb.Route, operation string)

MaybeAddOperationNameHeader adds the generated operation name config to the route.

func MaybeAddRetryPolicy

func MaybeAddRetryPolicy(c *RouteRetryConfiger, routeAction *routepb.RouteAction) error

MaybeAddRetryPolicy adds the generated Retry config to the route action.

Types

type BackendRouteGenerator

type BackendRouteGenerator struct {
	DisallowColonInWildcardPathSegment bool
	RetryCfg                           *RouteRetryConfiger
	HSTSCfg                            *RouteHSTSConfiger
	OperationNameCfg                   *RouteOperationNameConfiger
	DeadlineCfg                        *RouteDeadlineConfiger
}

BackendRouteGenerator generates routes that forward request to the backend. (i.e. NO direct response routes are generated)

This should NOT be used directly. Use it via an abstraction like RemoteBackendRoute or LocalBackendRoute.

func NewBackendRouteGeneratorFromOPConfig

func NewBackendRouteGeneratorFromOPConfig(opts options.ConfigGeneratorOptions) *BackendRouteGenerator

NewBackendRouteGeneratorFromOPConfig creates a BackendRouteGenerator from ESPv2 options.

func (*BackendRouteGenerator) GenRoutesForMethod

func (r *BackendRouteGenerator) GenRoutesForMethod(methodCfg *MethodCfg, filterGens []filtergen.FilterGenerator) ([]*routepb.Route, error)

GenRoutesForMethod generates the route config for the given URI template.

Forked from `route_generator.go: makeRoute()`

type MethodCfg

type MethodCfg struct {
	OperationName      string
	BackendClusterName string
	HostRewrite        string
	Deadline           time.Duration
	IsStreaming        bool
	HTTPPattern        *httppattern.Pattern
}

MethodCfg is all the config needed to generate routes for a single One Platform operation (RPC method).

type RouteDeadlineConfiger

type RouteDeadlineConfiger struct {
	GlobalStreamIdleTimeout time.Duration
}

RouteDeadlineConfiger is a helper to configure deadlines and timeouts on backend routes.

func NewRouteDeadlineConfigerFromOPConfig

func NewRouteDeadlineConfigerFromOPConfig(opts options.ConfigGeneratorOptions) *RouteDeadlineConfiger

NewRouteDeadlineConfigerFromOPConfig creates a RouteDeadlineConfiger from ESPv2 options.

func (*RouteDeadlineConfiger) CalcIdleTimeout

func (c *RouteDeadlineConfiger) CalcIdleTimeout(deadline time.Duration, isStreaming bool) (time.Duration, time.Duration)

CalcIdleTimeout will return the correct idle timeout based on method properties.

Forked from `service_info.go`

type RouteHSTSConfiger

type RouteHSTSConfiger struct{}

RouteHSTSConfiger is a helper to enable strict transport security, preventing downstream from protocol downgrades to HTTP.

func NewRouteHSTSConfigerFromOPConfig

func NewRouteHSTSConfigerFromOPConfig(opts options.ConfigGeneratorOptions) *RouteHSTSConfiger

NewRouteHSTSConfigerFromOPConfig creates a RouteHSTSConfiger from ESPv2 options.

func (*RouteHSTSConfiger) MakeHSTSConfig

func (c *RouteHSTSConfiger) MakeHSTSConfig() []*corepb.HeaderValueOption

MakeHSTSConfig creates the response headers to add to the route.

Forked from `route_generator.go`

type RouteMatchWrapper

type RouteMatchWrapper struct {
	*routepb.RouteMatch
	UriTemplate string
}

func MakePerMethodRouteMatchers

func MakePerMethodRouteMatchers(httpRule *httppattern.Pattern, disallowColonInWildcardPathSegment bool) ([]*RouteMatchWrapper, error)

MakePerMethodRouteMatchers creates all route matchers for a single HTTP rule.

func MakeRouteMatchers

func MakeRouteMatchers(httpRule *httppattern.Pattern, disallowColonInWildcardPathSegment bool) ([]*RouteMatchWrapper, error)

MakeRouteMatchers creates all route matchers for a single HTTP rule. Does not add on :method matchers.

type RouteOperationNameConfiger

type RouteOperationNameConfiger struct {
	GeneratedHeaderPrefix string
}

RouteOperationNameConfiger is a helper to add the ESPv2 operation name to the upstream request.

func NewRouteOperationNameConfigerFromOPConfig

func NewRouteOperationNameConfigerFromOPConfig(opts options.ConfigGeneratorOptions) *RouteOperationNameConfiger

NewRouteOperationNameConfigerFromOPConfig creates a RouteOperationNameConfiger from ESPv2 options.

func (*RouteOperationNameConfiger) MakeOperationNameConfig

func (c *RouteOperationNameConfiger) MakeOperationNameConfig(operation string) []*corepb.HeaderValueOption

MakeOperationNameConfig creates the response headers to add to the route.

Forked from `route_generator.go`

type RouteRetryConfiger

type RouteRetryConfiger struct {
	RetryOns           string
	RetryNum           uint
	RetryOnStatusCodes string
	PerTryTimeout      time.Duration
}

RouteRetryConfiger is a helper to add backend retry policy to the route.

func NewRouteRetryConfigerFromOPConfig

func NewRouteRetryConfigerFromOPConfig(opts options.ConfigGeneratorOptions) *RouteRetryConfiger

NewRouteRetryConfigerFromOPConfig creates a RouteRetryConfiger from ESPv2 options.

func (*RouteRetryConfiger) MakeRetryConfig

func (c *RouteRetryConfiger) MakeRetryConfig() (*routepb.RetryPolicy, error)

MakeRetryConfig creates the backend retry config.

Forked from `service_info.go` and `route_generator.go`

Jump to

Keyboard shortcuts

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