Documentation
¶
Index ¶
- Constants
- func GenerateCorrelationID() string
- func GenerateRequestID() string
- func GetCorrelationID(ctx context.Context) string
- func GetOrGenerateRequestID(providedID string) string
- func GetRequestID(ctx context.Context) string
- func IsValidRequestID(id string) bool
- func WithCorrelationID(ctx context.Context, correlationID string) context.Context
- func WithMetadata(ctx context.Context, source RequestSource) context.Context
- func WithRequestID(ctx context.Context, requestID string) context.Context
- func WithRequestSource(ctx context.Context, source RequestSource) context.Context
- type ContextKey
- type RequestSource
Constants ¶
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 ¶
GetCorrelationID retrieves the correlation ID from context
func GetOrGenerateRequestID ¶
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 ¶
GetRequestID retrieves the request ID from context
func IsValidRequestID ¶
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 ¶
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 ¶
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