mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
_Disclosure: created with Coder Agents._ When providers are disabled, we should serve a sentinel error so the requesting client (Claude Code, Coder Agents, etc) is informed. Coder Agents can also conditionalize its display to show a helpful error message. --------- Signed-off-by: Danny Kopping <danny@coder.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
1.7 KiB
Go
44 lines
1.7 KiB
Go
package testutil
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"go.opentelemetry.io/otel/trace"
|
|
|
|
"cdr.dev/slog/v3"
|
|
"github.com/coder/coder/v2/aibridge/config"
|
|
"github.com/coder/coder/v2/aibridge/intercept"
|
|
"github.com/coder/coder/v2/aibridge/keypool"
|
|
)
|
|
|
|
type MockProvider struct {
|
|
NameStr string
|
|
URL string
|
|
Disabled bool
|
|
Bridged []string
|
|
Passthrough []string
|
|
InterceptorFunc func(w http.ResponseWriter, r *http.Request, tracer trace.Tracer) (intercept.Interceptor, error)
|
|
}
|
|
|
|
func (m *MockProvider) Type() string { return m.NameStr }
|
|
func (m *MockProvider) Name() string { return m.NameStr }
|
|
func (m *MockProvider) Enabled() bool { return !m.Disabled }
|
|
func (m *MockProvider) BaseURL() string { return m.URL }
|
|
func (m *MockProvider) RoutePrefix() string { return fmt.Sprintf("/%s", m.NameStr) }
|
|
func (m *MockProvider) BridgedRoutes() []string { return m.Bridged }
|
|
func (m *MockProvider) PassthroughRoutes() []string { return m.Passthrough }
|
|
func (*MockProvider) AuthHeader() string { return "Authorization" }
|
|
|
|
func (*MockProvider) KeyFailoverConfig(_ slog.Logger) keypool.KeyFailoverConfig {
|
|
return keypool.KeyFailoverConfig{}
|
|
}
|
|
func (*MockProvider) CircuitBreakerConfig() *config.CircuitBreaker { return nil }
|
|
func (*MockProvider) APIDumpDir() string { return "" }
|
|
func (m *MockProvider) CreateInterceptor(w http.ResponseWriter, r *http.Request, tracer trace.Tracer) (intercept.Interceptor, error) {
|
|
if m.InterceptorFunc != nil {
|
|
return m.InterceptorFunc(w, r, tracer)
|
|
}
|
|
return nil, nil //nolint:nilnil // mock: no interceptor configured is not an error
|
|
}
|