| 1 | import * as Headers from "../Headers.ts" |
| 2 | import type * as HttpBody from "../HttpBody.ts" |
| 3 | |
| 4 | /** |
| 5 | * @internal |
| 6 | */ |
| 7 | export const updateHeaders = (headers: Headers.Headers, body: HttpBody.HttpBody): Headers.Headers => { |
| 8 | if (body._tag === "Empty" || body._tag === "FormData") { |
| 9 | return Headers.remove(Headers.remove(headers, "content-type"), "content-length") |
| 10 | } |
| 11 | headers = body.contentType === undefined |
| 12 | ? Headers.remove(headers, "content-type") |
| 13 | : Headers.set(headers, "content-type", body.contentType) |
| 14 | return body.contentLength === undefined |
| 15 | ? Headers.remove(headers, "content-length") |
| 16 | : Headers.set(headers, "content-length", body.contentLength.toString()) |
| 17 | } |
| 18 | |
| 19 | /** |
| 20 | * @internal |
| 21 | */ |
| 22 | export const parseContentLength = (contentLength: string | null | undefined): number | undefined => { |
| 23 | if (contentLength === null || contentLength === undefined || !/^\d+$/.test(contentLength)) { |
| 24 | return undefined |
| 25 | } |
| 26 | const parsed = Number(contentLength) |
| 27 | return Number.isSafeInteger(parsed) ? parsed : undefined |
| 28 | } |