Documentation
¶
Index ¶
- func APIKeyValidationMiddleware(providerManager *providers.ProviderManager, keyStore providers.APIKeyStore) func(http.Handler) http.Handler
- func CORSMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler
- func ExtractIPAddressFromRequest(req *http.Request) string
- func ExtractUserIDFromRequest(req *http.Request, provider providers.Provider) string
- func GetProviderFromRequest(providerManager *providers.ProviderManager, req *http.Request) providers.Provider
- func LoggingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler
- func MetaURLRewritingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler
- func RateLimitingMiddleware(pm *providers.ProviderManager, cfg *config.YAMLConfig, ...) func(http.Handler) http.Handler
- func StreamingMiddleware(providerManager *providers.ProviderManager) func(http.Handler) http.Handler
- func TokenParsingMiddleware(providerManager *providers.ProviderManager, callbacks ...MetadataCallback) func(http.Handler) http.Handler
- type MetadataCallback
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 ¶
CORSMiddleware adds CORS headers with streaming support
func ExtractIPAddressFromRequest ¶
ExtractIPAddressFromRequest extracts IP address from request headers
func ExtractUserIDFromRequest ¶
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 ¶
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.