diff --git a/packages/cli/src/inbox/rendercode.ts b/packages/cli/src/inbox/rendercode.ts index 52e01ec5..738b7e77 100644 --- a/packages/cli/src/inbox/rendercode.ts +++ b/packages/cli/src/inbox/rendercode.ts @@ -2,37 +2,35 @@ import type { Activity } from "@fedify/vocab"; import { getStatusText } from "@poppanator/http-constants"; import { getContextLoader } from "../docloader.ts"; -export async function renderRequest(request: Request): Promise { +export function renderRequest(request: Request): Promise { // @ts-ignore: Work around `deno publish --dry-run` bug request = request.clone(); const url = new URL(request.url); - let code = `${request.method} ${url.pathname + url.search}\n`; - for (const [key, value] of request.headers.entries()) { - code += `${capitalize(key)}: ${value}\n`; - } - let body: string; - try { - body = await request.text(); - } catch (_) { - body = "[Failed to decode body; it may be binary.]"; - } - code += `\n${body}`; - return code; + const statusLine = `${request.method} ${url.pathname + url.search}`; + return render(request, statusLine); } -export async function renderResponse(response: Response): Promise { +export function renderResponse(response: Response): Promise { response = response.clone(); - let code = `${response.status} ${ + const statusLine = `${response.status} ${ response.statusText === "" ? getStatusText(response.status) : response.statusText - }\n`; - for (const [key, value] of response.headers.entries()) { + }`; + return render(response, statusLine); +} + +async function render( + requestOrResponse: Request | Response, + statusLine: string, +): Promise { + let code = `${statusLine}\n`; + for (const [key, value] of requestOrResponse.headers.entries()) { code += `${capitalize(key)}: ${value}\n`; } let body: string; try { - body = await response.text(); + body = await requestOrResponse.text(); } catch (_) { body = "[Failed to decode body; it may be binary.]"; }