middleware

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APIKeyValidationMiddleware

func APIKeyValidationMiddleware(providerManager *providers.ProviderManager, keyStore providers.APIKeyStore) func(http.Handler) http.Handler

APIKeyValidationMiddleware validates and potentially replaces API keys for all providers

func CORSMiddleware

func CORSMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler

CORSMiddleware adds CORS headers with streaming support

func ExtractIPAddressFromRequest

func ExtractIPAddressFromRequest(req *http.Request) string

ExtractIPAddressFromRequest extracts IP address from request headers

func ExtractUserIDFromRequest

func ExtractUserIDFromRequest(req *http.Request, provider providers.Provider) string

ExtractUserIDFromRequest extracts user ID from request headers, query parameters, or provider-specific methods Follows the priority order: context (from meta URL) → URL path → headers → query parameters → provider-specific extraction → fallback to IP

func GetProviderFromRequest

func GetProviderFromRequest(providerManager *providers.ProviderManager, req *http.Request) providers.Provider

GetProviderFromRequest determines which provider to use based on the request path

func LoggingMiddleware

func LoggingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler

LoggingMiddleware logs all incoming requests and identifies non-tracked provider routes

func MetaURLRewritingMiddleware

func MetaURLRewritingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler

MetaURLRewritingMiddleware centralizes URL path rewriting for all providers It handles both direct provider paths (/openai/, /anthropic/, /gemini/) and meta paths (/meta/{userID}/openai/, /meta/{userID}/anthropic/, /meta/{userID}/gemini/) It also extracts and stores the user ID in context for later use by other middleware

func RateLimitingMiddleware

func RateLimitingMiddleware(pm *providers.ProviderManager, cfg *config.YAMLConfig, limiter ratelimit.RateLimiter) func(http.Handler) http.Handler

RateLimitingMiddleware enforces rate limits using the provided limiter. It does a provisional token reservation based on estimation and reconciles after response parsing.

func StreamingMiddleware

func StreamingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler

StreamingMiddleware ensures proper handling of streaming responses

func TokenParsingMiddleware

func TokenParsingMiddleware(providerManager *providers.ProviderManager, callbacks ...MetadataCallback) func(http.Handler) http.Handler

TokenParsingMiddleware intercepts responses to parse and log token usage

Types

type MetadataCallback

type MetadataCallback func(r *http.Request, metadata *providers.LLMResponseMetadata)

MetadataCallback is a function that can be hooked into the TokenParsingMiddleware to process LLM response metadata.

Jump to

Keyboard shortcuts

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