mirror of
https://github.com/vercel/commerce.git
synced 2025-05-17 15:06:59 +00:00
Change headers
This commit is contained in:
parent
c27328f853
commit
685548cb81
@ -29,8 +29,8 @@ export const getInput = (req: NextRequest) => req.json().catch(() => ({}))
|
||||
* @param path string
|
||||
*/
|
||||
export const transformRequest = (req: NextApiRequest, path: string) => {
|
||||
let body
|
||||
const headers = new Headers()
|
||||
let body
|
||||
|
||||
for (let i = 0; i < req.rawHeaders.length; i += 2) {
|
||||
headers.append(req.rawHeaders[i], req.rawHeaders[i + 1])
|
||||
@ -51,8 +51,13 @@ export const transformRequest = (req: NextApiRequest, path: string) => {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the custom headers received in the APIResponse in the
|
||||
* @param headers Record<string, string|string[]> | Headers | undefined
|
||||
* @returns Headers
|
||||
*/
|
||||
export const transformHeaders = (
|
||||
headers?: Record<string, string | number | string[]> | Headers
|
||||
headers: Record<string, string | number | string[]> | Headers = {}
|
||||
) => {
|
||||
if (headers instanceof Headers) {
|
||||
return headers
|
||||
@ -60,9 +65,24 @@ export const transformHeaders = (
|
||||
|
||||
const newHeaders = new Headers()
|
||||
|
||||
Object.entries(headers || {}).forEach(([key, value]) => {
|
||||
Object.entries(headers).forEach(([key, value]) => {
|
||||
newHeaders.append(key, value as string)
|
||||
})
|
||||
|
||||
return newHeaders
|
||||
}
|
||||
|
||||
export const setHeaders = (
|
||||
res: NextApiResponse,
|
||||
headers: Record<string, string | number | string[]> | Headers = {}
|
||||
) => {
|
||||
if (headers instanceof Headers) {
|
||||
headers.forEach((value, key) => {
|
||||
res.setHeader(key, value)
|
||||
})
|
||||
} else {
|
||||
Object.entries(headers).forEach(([key, value]) => {
|
||||
res.setHeader(key, value)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ import type { NextApiRequest, NextApiResponse } from 'next'
|
||||
import type { APIProvider, CommerceAPI, EndpointHandler } from '..'
|
||||
|
||||
import { normalizeApiError } from './errors'
|
||||
import { transformRequest } from '.'
|
||||
import { transformRequest, setHeaders } from '.'
|
||||
|
||||
export default function nodeHandler<P extends APIProvider>(
|
||||
commerce: CommerceAPI<P>,
|
||||
@ -47,17 +47,7 @@ export default function nodeHandler<P extends APIProvider>(
|
||||
const output = await handlers[path](transformRequest(req, path))
|
||||
const { status, errors, data, redirectTo, headers } = output
|
||||
|
||||
if (headers) {
|
||||
if (headers instanceof Headers) {
|
||||
headers.forEach((value, key) => {
|
||||
res.setHeader(key, value)
|
||||
})
|
||||
} else {
|
||||
Object.entries(headers).forEach(([key, value]) => {
|
||||
res.setHeader(key, value)
|
||||
})
|
||||
}
|
||||
}
|
||||
setHeaders(res, headers)
|
||||
|
||||
if (output instanceof Response) {
|
||||
return res.end(output.body)
|
||||
@ -78,7 +68,7 @@ export default function nodeHandler<P extends APIProvider>(
|
||||
return res.end(output.body)
|
||||
}
|
||||
|
||||
const { status = 500, ...rest } = normalizeApiError(error)
|
||||
const { status = 500, ...rest } = output
|
||||
res.status(status).json(rest)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user