first commit
This commit is contained in:
72
transports/bifrost-http/integrations/passthrough.go
Normal file
72
transports/bifrost-http/integrations/passthrough.go
Normal file
@@ -0,0 +1,72 @@
|
||||
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",
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user