upstream

package
v1.118.0 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package upstream provides utilities for propagating HTTP headers from incoming API requests to outbound toolset HTTP calls.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Handler

func Handler(next http.Handler) http.Handler

Handler wraps an http.Handler to store the incoming HTTP request headers in the request context for downstream toolset forwarding.

func HeadersFromContext

func HeadersFromContext(ctx context.Context) http.Header

HeadersFromContext retrieves upstream HTTP headers from the context. Returns nil if no headers are present.

func NewHeaderTransport

func NewHeaderTransport(base http.RoundTripper, headers map[string]string) http.RoundTripper

NewHeaderTransport wraps an http.RoundTripper to set custom headers. The first request pins the origin; redirects to another origin do not receive the configured headers.

func NewHeaderTransportForOrigin added in v1.118.0

func NewHeaderTransportForOrigin(base http.RoundTripper, origin string, headers map[string]string) http.RoundTripper

NewHeaderTransportForOrigin is like NewHeaderTransport, but pins the origin before the first request so a shared transport cannot be initialized by the wrong caller.

func NewHeaderTransportWithResolver added in v1.104.0

func NewHeaderTransportWithResolver(base http.RoundTripper, headers map[string]string, resolve HeaderResolver) http.RoundTripper

NewHeaderTransportWithResolver is like NewHeaderTransport but resolves the header values through resolve on every request.

func NewHeaderTransportWithResolverForOrigin added in v1.118.0

func NewHeaderTransportWithResolverForOrigin(base http.RoundTripper, origin string, headers map[string]string, resolve HeaderResolver) http.RoundTripper

NewHeaderTransportWithResolverForOrigin combines per-request resolution with an explicitly pinned origin.

func ResolveHeaders

func ResolveHeaders(ctx context.Context, headers map[string]string) map[string]string

ResolveHeaders resolves ${headers.NAME} placeholders in header values using upstream headers from the context. Header names in the placeholder are case-insensitive, matching HTTP header convention.

For example, given the config header:

Authorization: ${headers.Authorization}

and an upstream request with "Authorization: Bearer token", the resolved value will be "Bearer token".

func SameOrigin added in v1.118.0

func SameOrigin(rawURL string, target *url.URL) bool

SameOrigin reports whether target has the same scheme, host, and effective port as rawURL.

func WithHeaders

func WithHeaders(ctx context.Context, h http.Header) context.Context

WithHeaders returns a new context carrying the given HTTP headers.

Types

type HeaderResolver added in v1.104.0

type HeaderResolver func(ctx context.Context, headers map[string]string) map[string]string

HeaderResolver resolves configured header values into the final values to set on an outbound request. It is invoked once per request with the request's context, so implementations can consult dynamic sources (e.g. upstream headers stored in the context, or environment providers backed by rotating credentials) without going stale on long-lived connections.

Jump to

Keyboard shortcuts

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