73 lines
2.4 KiB
Go
73 lines
2.4 KiB
Go
package integrations
|
|
|
|
import (
|
|
bifrost "github.com/maximhq/bifrost/core"
|
|
"github.com/maximhq/bifrost/core/schemas"
|
|
"github.com/maximhq/bifrost/transports/bifrost-http/lib"
|
|
)
|
|
|
|
// PassthroughRouter is a catch-all router that forwards all requests directly
|
|
// to the provider without matching against known route patterns.
|
|
type PassthroughRouter struct {
|
|
*GenericRouter
|
|
}
|
|
|
|
// NewPassthroughRouter creates a passthrough-only router for any prefix/provider combo.
|
|
func NewPassthroughRouter(
|
|
client *bifrost.Bifrost,
|
|
handlerStore lib.HandlerStore,
|
|
logger schemas.Logger,
|
|
cfg *PassthroughConfig,
|
|
) *PassthroughRouter {
|
|
if cfg == nil {
|
|
cfg = &PassthroughConfig{}
|
|
}
|
|
return &PassthroughRouter{
|
|
GenericRouter: NewGenericRouter(client, handlerStore, nil, cfg, logger),
|
|
}
|
|
}
|
|
|
|
// NewAnthropicPassthroughRouter creates a passthrough router for /anthropic_passthrough.
|
|
func NewAnthropicPassthroughRouter(client *bifrost.Bifrost, handlerStore lib.HandlerStore, logger schemas.Logger) *PassthroughRouter {
|
|
return NewPassthroughRouter(client, handlerStore, logger, &PassthroughConfig{
|
|
Provider: schemas.Anthropic,
|
|
StripPrefix: []string{
|
|
"/anthropic_passthrough",
|
|
},
|
|
})
|
|
}
|
|
|
|
// NewOpenAIPassthroughRouter creates a passthrough router for /openai_passthrough.
|
|
func NewOpenAIPassthroughRouter(client *bifrost.Bifrost, handlerStore lib.HandlerStore, logger schemas.Logger) *PassthroughRouter {
|
|
return NewPassthroughRouter(client, handlerStore, logger, &PassthroughConfig{
|
|
Provider: schemas.OpenAI,
|
|
StripPrefix: []string{
|
|
"/openai_passthrough",
|
|
},
|
|
})
|
|
}
|
|
|
|
// NewAzurePassthroughRouter creates a passthrough router for /azure_passthrough.
|
|
func NewAzurePassthroughRouter(client *bifrost.Bifrost, handlerStore lib.HandlerStore, logger schemas.Logger) *PassthroughRouter {
|
|
return NewPassthroughRouter(client, handlerStore, logger, &PassthroughConfig{
|
|
Provider: schemas.Azure,
|
|
StripPrefix: []string{
|
|
"/azure_passthrough",
|
|
},
|
|
})
|
|
}
|
|
|
|
// NewGenAIPassthroughRouter creates a passthrough router for /genai_passthrough.
|
|
func NewGenAIPassthroughRouter(client *bifrost.Bifrost, handlerStore lib.HandlerStore, logger schemas.Logger) *PassthroughRouter {
|
|
return NewPassthroughRouter(client, handlerStore, logger, &PassthroughConfig{
|
|
Provider: schemas.Gemini,
|
|
ProviderDetector: detectProviderFromGenAIRequest,
|
|
StripPrefix: []string{
|
|
"/genai_passthrough/v1beta1",
|
|
"/genai_passthrough/v1beta",
|
|
"/genai_passthrough/v1",
|
|
"/genai_passthrough",
|
|
},
|
|
})
|
|
}
|