Skip to content

Commit 9f2baa0

Browse files
committed
fix: improve error handling and logging for CometAPI model fetching
1 parent e214c05 commit 9f2baa0

File tree

1 file changed

+43
-12
lines changed

1 file changed

+43
-12
lines changed

src/api/providers/fetchers/cometapi.ts

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,12 @@ export async function getCometApiModels(
111111
}
112112

113113
const url = `${baseUrl.replace(/\/$/, "")}/models`
114-
console.log(`CometAPI: Fetching models from ${url}`)
115-
console.log(`CometAPI: Using API key: ${apiKey?.substring(0, 8)}...`)
116114

117115
const response = await axios.get(url, {
118116
headers,
119117
timeout: 15000, // Increased timeout for better reliability
120118
})
121119

122-
console.log(`CometAPI: Received response with status ${response.status}`)
123-
console.log(`CometAPI: Response data keys:`, Object.keys(response.data || {}))
124-
125120
const parsed = cometApiModelsResponseSchema.safeParse(response.data)
126121
const data = parsed.success ? (parsed.data as any).data : (response.data as any)?.data || []
127122

@@ -147,15 +142,51 @@ export async function getCometApiModels(
147142
// Intentionally not setting inputPrice/outputPrice as CometAPI doesn't provide this info
148143
}
149144
}
150-
151-
console.log(`CometAPI: Successfully fetched ${Object.keys(models).length} models:`, Object.keys(models))
152145
} catch (error) {
153146
if (axios.isAxiosError(error)) {
154-
console.error(`CometAPI: API request failed: ${error.response?.status} ${error.response?.statusText}`)
155-
console.error(`CometAPI: Response data:`, error.response?.data)
156-
throw new Error(
157-
`Failed to fetch CometAPI models: ${error.response?.status} ${error.response?.statusText}. Check API key and network connectivity.`,
158-
)
147+
const status = error.response?.status
148+
const statusText = error.response?.statusText || ""
149+
const code = (error as any).code as string | undefined
150+
151+
console.error(`CometAPI: API request failed`, {
152+
status,
153+
statusText,
154+
code,
155+
// Do not log headers or API keys
156+
url: error.config?.url,
157+
timeout: error.config?.timeout,
158+
})
159+
if (error.response) {
160+
console.error(`CometAPI: Response data:`, error.response.data)
161+
}
162+
163+
let message: string
164+
if (typeof status === "number") {
165+
if (status === 401 || status === 403) {
166+
message = `CometAPI authentication failed (${status}). Please verify your API key and permissions.`
167+
} else if (status === 429) {
168+
message = `CometAPI rate limit exceeded (429). Please slow down or check your plan limits.`
169+
} else if (status >= 500) {
170+
message = `CometAPI server error (${status} ${statusText}). Please try again later.`
171+
} else {
172+
message = `CometAPI request failed (${status} ${statusText}).`
173+
}
174+
} else {
175+
// No HTTP response received: network, DNS, timeout, etc.
176+
if (code === "ECONNABORTED" || code === "ETIMEDOUT" || /timeout/i.test(error.message || "")) {
177+
message = `CometAPI request timed out. Please check your network and base URL (${baseUrl}).`
178+
} else if (code === "ENOTFOUND" || code === "EAI_AGAIN") {
179+
message = `DNS lookup failed for ${baseUrl}. Please verify the domain and your DNS/network settings.`
180+
} else if (code === "ECONNREFUSED") {
181+
message = `Connection refused by ${baseUrl}. Is the service reachable from your network?`
182+
} else if (error.request) {
183+
message = `No response from CometAPI at ${baseUrl}. Please check your network connectivity.`
184+
} else {
185+
message = `Failed to initiate CometAPI request: ${error.message || "Unknown network error"}.`
186+
}
187+
}
188+
189+
throw new Error(message)
159190
} else {
160191
console.error(`CometAPI: Error fetching models:`, error)
161192
throw new Error(

0 commit comments

Comments
 (0)