fix(atlassian): tighten health checks and review coverage

This commit is contained in:
Stefano Fiorini
2026-03-06 07:06:38 -06:00
parent c3afee091b
commit 783bcfa037
26 changed files with 641 additions and 71 deletions

View File

@@ -24,12 +24,33 @@ export async function parseResponse(response: Response) {
const contentType = response.headers.get("content-type") ?? "";
if (contentType.includes("application/json")) {
return response.json();
try {
return await response.json();
} catch {
throw new Error("Malformed JSON response from Atlassian API");
}
}
return response.text();
}
export function createStatusError(errorPrefix: string, response: Response) {
const base = `${errorPrefix}: ${response.status} ${response.statusText}`;
switch (response.status) {
case 401:
return new Error(`${base} - check ATLASSIAN_EMAIL and ATLASSIAN_API_TOKEN`);
case 403:
return new Error(`${base} - verify product permissions for this account`);
case 404:
return new Error(`${base} - verify the resource identifier or API path`);
case 429:
return new Error(`${base} - retry later or reduce request rate`);
default:
return new Error(base);
}
}
export async function sendJsonRequest(options: {
config: AtlassianConfig;
fetchImpl?: FetchLike;
@@ -58,7 +79,7 @@ export async function sendJsonRequest(options: {
throw customError;
}
throw new Error(`${options.errorPrefix}: ${response.status} ${response.statusText}`);
throw createStatusError(options.errorPrefix, response);
}
return parseResponse(response);