reqcontext

package
v0.15.4 Latest Latest
Warning

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

Go to latest
Published: Jan 19, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// RequestIDHeader is the HTTP header name for request IDs
	RequestIDHeader = "X-Request-Id"

	// MaxRequestIDLength is the maximum allowed length for a request ID
	MaxRequestIDLength = 256
)

Variables

This section is empty.

Functions

func GenerateCorrelationID

func GenerateCorrelationID() string

GenerateCorrelationID generates a new unique correlation ID

func GenerateRequestID

func GenerateRequestID() string

GenerateRequestID generates a new UUID v4 request ID

func GetCorrelationID

func GetCorrelationID(ctx context.Context) string

GetCorrelationID retrieves the correlation ID from context

func GetOrGenerateRequestID

func GetOrGenerateRequestID(providedID string) string

GetOrGenerateRequestID returns the provided ID if valid, otherwise generates a new one. This is the main entry point for request ID handling in middleware.

func GetRequestID

func GetRequestID(ctx context.Context) string

GetRequestID retrieves the request ID from context

func IsValidRequestID

func IsValidRequestID(id string) bool

IsValidRequestID checks if a request ID matches the allowed pattern. Valid IDs contain only alphanumeric characters, dashes, and underscores, and are between 1 and 256 characters long.

func WithCorrelationID

func WithCorrelationID(ctx context.Context, correlationID string) context.Context

WithCorrelationID adds a correlation ID to the context

func WithMetadata

func WithMetadata(ctx context.Context, source RequestSource) context.Context

WithMetadata adds both correlation ID and request source to context

func WithRequestID

func WithRequestID(ctx context.Context, requestID string) context.Context

WithRequestID adds a request ID to the context

func WithRequestSource

func WithRequestSource(ctx context.Context, source RequestSource) context.Context

WithRequestSource adds request source to the context

Types

type ContextKey

type ContextKey string

ContextKey is the type for context keys to avoid collisions

const (
	// CorrelationIDKey is the context key for correlation IDs
	CorrelationIDKey ContextKey = "correlation_id"

	// RequestSourceKey is the context key for request source
	RequestSourceKey ContextKey = "request_source"

	// RequestIDKey is the context key for request IDs (X-Request-Id header)
	RequestIDKey ContextKey = "request_id"

	// LoggerKey is the context key for request-scoped logger
	LoggerKey ContextKey = "logger"
)

type RequestSource

type RequestSource string

RequestSource indicates where the request originated

const (
	// SourceRESTAPI indicates request came from HTTP REST API
	SourceRESTAPI RequestSource = "REST_API"

	// SourceCLI indicates request came from CLI command
	SourceCLI RequestSource = "CLI"

	// SourceMCP indicates request came from MCP protocol
	SourceMCP RequestSource = "MCP"

	// SourceInternal indicates internal/background operation
	SourceInternal RequestSource = "INTERNAL"

	// SourceUnknown indicates source could not be determined
	SourceUnknown RequestSource = "UNKNOWN"
)

func GetRequestSource

func GetRequestSource(ctx context.Context) RequestSource

GetRequestSource retrieves the request source from context

Jump to

Keyboard shortcuts

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