1import * as Headers from "../Headers.ts"
2import type * as HttpBody from "../HttpBody.ts"
3
4/**
5 * @internal
6 */
7export 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 */
22export 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}