Documentation
¶
Overview ¶
Package upstream provides utilities for propagating HTTP headers from incoming API requests to outbound toolset HTTP calls.
Index ¶
- func Handler(next http.Handler) http.Handler
- func HeadersFromContext(ctx context.Context) http.Header
- func NewHeaderTransport(base http.RoundTripper, headers map[string]string) http.RoundTripper
- func NewHeaderTransportWithResolver(base http.RoundTripper, headers map[string]string, resolve HeaderResolver) http.RoundTripper
- func ResolveHeaders(ctx context.Context, headers map[string]string) map[string]string
- func WithHeaders(ctx context.Context, h http.Header) context.Context
- type HeaderResolver
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Handler ¶
Handler wraps an http.Handler to store the incoming HTTP request headers in the request context for downstream toolset forwarding.
func HeadersFromContext ¶
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 on every outbound request. Header values may contain ${headers.NAME} placeholders that are resolved at request time from upstream headers stored in the request context.
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. A nil resolve falls back to ResolveHeaders (i.e. ${headers.NAME} placeholder resolution only).
func ResolveHeaders ¶
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".
Types ¶
type HeaderResolver ¶ added in v1.104.0
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.