@@ -228,7 +228,7 @@ function readBody(req: IncomingMessage): Promise<string> {
|
228 | 228 | }); |
229 | 229 | } |
230 | 230 | |
231 | | -function parseOpenAiJsonBody(raw: string): Record<string, unknown> | null { |
| 231 | +function parseJsonObjectBody(raw: string): Record<string, unknown> | null { |
232 | 232 | try { |
233 | 233 | const parsed = raw ? (JSON.parse(raw) as unknown) : {}; |
234 | 234 | return parsed && typeof parsed === "object" && !Array.isArray(parsed) |
@@ -3438,7 +3438,7 @@ export async function startQaMockOpenAiServer(params?: { host?: string; port?: n
|
3438 | 3438 | } |
3439 | 3439 | if (req.method === "POST" && url.pathname === "/v1/images/generations") { |
3440 | 3440 | const raw = await readBody(req); |
3441 | | -const body = parseOpenAiJsonBody(raw); |
| 3441 | +const body = parseJsonObjectBody(raw); |
3442 | 3442 | if (!body) { |
3443 | 3443 | writeOpenAiMalformedJsonError(res, "OpenAI Images"); |
3444 | 3444 | return; |
@@ -3466,7 +3466,7 @@ export async function startQaMockOpenAiServer(params?: { host?: string; port?: n
|
3466 | 3466 | } |
3467 | 3467 | if (req.method === "POST" && url.pathname === "/v1/embeddings") { |
3468 | 3468 | const raw = await readBody(req); |
3469 | | -const body = parseOpenAiJsonBody(raw); |
| 3469 | +const body = parseJsonObjectBody(raw); |
3470 | 3470 | if (!body) { |
3471 | 3471 | writeOpenAiMalformedJsonError(res, "OpenAI Embeddings"); |
3472 | 3472 | return; |
@@ -3492,7 +3492,7 @@ export async function startQaMockOpenAiServer(params?: { host?: string; port?: n
|
3492 | 3492 | } |
3493 | 3493 | if (req.method === "POST" && url.pathname === "/v1/responses") { |
3494 | 3494 | const raw = await readBody(req); |
3495 | | -const body = parseOpenAiJsonBody(raw); |
| 3495 | +const body = parseJsonObjectBody(raw); |
3496 | 3496 | if (!body) { |
3497 | 3497 | writeOpenAiMalformedJsonError(res, "OpenAI Responses"); |
3498 | 3498 | return; |
@@ -3534,10 +3534,8 @@ export async function startQaMockOpenAiServer(params?: { host?: string; port?: n
|
3534 | 3534 | } |
3535 | 3535 | if (req.method === "POST" && url.pathname === "/v1/messages") { |
3536 | 3536 | const raw = await readBody(req); |
3537 | | -let body: AnthropicMessagesRequest; |
3538 | | -try { |
3539 | | -body = raw ? (JSON.parse(raw) as AnthropicMessagesRequest) : {}; |
3540 | | -} catch { |
| 3537 | +const body = parseJsonObjectBody(raw) as AnthropicMessagesRequest | null; |
| 3538 | +if (!body) { |
3541 | 3539 | writeJson(res, 400, { |
3542 | 3540 | type: "error", |
3543 | 3541 | error: { |
|