func NewProxyMode()

in proxymode/proxymode.go [48:82]


func NewProxyMode(logger *zap.Logger, options ProxyOptions) (*ProxyMode, error) {
	var pm ProxyMode
	pm.options = options
	pm.logger = logger

	if !options.Enabled {
		return &pm, nil
	}

	pm.httpClient = &retryablehttp.Client{
		HTTPClient: &http.Client{
			Timeout: 10 * time.Second,
			Transport: &http.Transport{
				MaxIdleConns:        100,
				MaxIdleConnsPerHost: 100,
				IdleConnTimeout:     90 * time.Second,
			},
		},
		Logger:       withZapLoggerAdapter(logger),
		RetryWaitMin: 1 * time.Second,
		RetryWaitMax: 15 * time.Second,
		RetryMax:     4,
		CheckRetry:   proxyRetryPolicy,
		Backoff:      retryablehttp.DefaultBackoff,
	}

	var err error
	pm.destinationURL, err = url.Parse(pm.options.ProxyTo)
	if err != nil {
		return nil, fmt.Errorf("can't create proxy destination URL: %w", err)
	}

	pm.resolver = &proxyResolver{destinationURL: *pm.destinationURL}
	return &pm, nil
}