on main help sign in
refactor: cleanup the code a bit
commit59887a301733b1ba9cd1949cec1ac05d321e53a9 authorAndrey Nering <andreynering@users.noreply.github.com> dateFri 6 Feb 2026, 13:26 (8 months ago) parentafb5be9
1 file changed+28−20
internal/config/config.go+28−20
internal/config/config.go+28−20
@@ -773,42 +773,48 @@ func (c *Config) Resolver() VariableResolver {
773773}
774774
775775func (c *ProviderConfig) TestConnection(resolver VariableResolver) error {
776− testURL := ""
777− headers := make(map[string]string)
778− apiKey, _ := resolver.ResolveValue(c.APIKey)
776+ var (
777+ providerID = catwalk.InferenceProvider(c.ID)
778+ testURL = ""
779+ headers = make(map[string]string)
780+ apiKey, _ = resolver.ResolveValue(c.APIKey)
781+ )
782+
779783 switch c.Type {
780784 case catwalk.TypeOpenAI, catwalk.TypeOpenAICompat, catwalk.TypeOpenRouter:
781785 baseURL, _ := resolver.ResolveValue(c.BaseURL)
782− if baseURL == "" {
783− baseURL = "https://api.openai.com/v1"
784− }
785− if c.ID == string(catwalk.InferenceProviderOpenRouter) {
786+ baseURL = cmp.Or(baseURL, "https://api.openai.com/v1")
787+
788+ switch providerID {
789+ case catwalk.InferenceProviderOpenRouter:
786790 testURL = baseURL + "/credits"
787− } else {
791+ default:
788792 testURL = baseURL + "/models"
789793 }
794+
790795 headers["Authorization"] = "Bearer " + apiKey
791796 case catwalk.TypeAnthropic:
792797 baseURL, _ := resolver.ResolveValue(c.BaseURL)
793− if baseURL == "" {
794− baseURL = "https://api.anthropic.com/v1"
795− }
796− testURL = baseURL + "/models"
797− // TODO: replace with const when catwalk is released
798− if c.ID == "kimi-coding" {
798+ baseURL = cmp.Or(baseURL, "https://api.anthropic.com/v1")
799+
800+ switch providerID {
801+ case catwalk.InferenceKimiCoding:
799802 testURL = baseURL + "/v1/models"
803+ default:
804+ testURL = baseURL + "/models"
800805 }
806+
801807 headers["x-api-key"] = apiKey
802808 headers["anthropic-version"] = "2023-06-01"
803809 case catwalk.TypeGoogle:
804810 baseURL, _ := resolver.ResolveValue(c.BaseURL)
805− if baseURL == "" {
806− baseURL = "https://generativelanguage.googleapis.com"
807− }
811+ baseURL = cmp.Or(baseURL, "https://generativelanguage.googleapis.com")
808812 testURL = baseURL + "/v1beta/models?key=" + url.QueryEscape(apiKey)
809813 }
814+
810815 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
811816 defer cancel()
817+
812818 client := &http.Client{}
813819 req, err := http.NewRequestWithContext(ctx, "GET", testURL, nil)
814820 if err != nil {
@@ -820,17 +826,19 @@ func (c *ProviderConfig) TestConnection(resolver VariableResolver) error {
820826 for k, v := range c.ExtraHeaders {
821827 req.Header.Set(k, v)
822828 }
829+
823830 resp, err := client.Do(req)
824831 if err != nil {
825832 return fmt.Errorf("failed to create request for provider %s: %w", c.ID, err)
826833 }
827834 defer resp.Body.Close()
828− if c.ID == string(catwalk.InferenceProviderZAI) {
835+
836+ switch providerID {
837+ case catwalk.InferenceProviderZAI:
829838 if resp.StatusCode == http.StatusUnauthorized {
830− // For z.ai just check if the http response is not 401.
831839 return fmt.Errorf("failed to connect to provider %s: %s", c.ID, resp.Status)
832840 }
833− } else {
841+ default:
834842 if resp.StatusCode != http.StatusOK {
835843 return fmt.Errorf("failed to connect to provider %s: %s", c.ID, resp.Status)
836844 }