refactor: share provider HTTP error parsing

This commit is contained in:
Peter Steinberger
2026-04-24 19:58:28 +01:00
parent 37d5c34749
commit 2c516fe516
16 changed files with 83 additions and 55 deletions

View File

@@ -1,3 +1,7 @@
import {
createProviderHttpError,
formatProviderHttpErrorMessage,
} from "openclaw/plugin-sdk/provider-http";
import {
buildSearchCacheKey,
buildUnsupportedSearchFilterResponse,
@@ -81,11 +85,8 @@ async function runGeminiSearch(params: {
},
async (res) => {
if (!res.ok) {
const safeDetail = ((await res.text()) || res.statusText).replace(
/key=[^&\s]+/giu,
"key=***",
);
throw new Error(`Gemini API error (${res.status}): ${safeDetail}`);
const error = await createProviderHttpError(res, "Gemini API error");
throw new Error(error.message.replace(/key=[^&\s]+/giu, "key=***"));
}
let data: GeminiGroundingResponse;
@@ -99,7 +100,11 @@ async function runGeminiSearch(params: {
if (data.error) {
const rawMessage = data.error.message || data.error.status || "unknown";
throw new Error(
`Gemini API error (${data.error.code}): ${rawMessage.replace(/key=[^&\s]+/giu, "key=***")}`,
formatProviderHttpErrorMessage({
label: "Gemini API error",
status: data.error.code ?? 0,
detail: rawMessage.replace(/key=[^&\s]+/giu, "key=***"),
}),
);
}