Files
bifrost/transports/bifrost-http/integrations/passthrough.go
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

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",
},
})
}