MCPcopy
hub / github.com/tinyhttp/tinyhttp / formatResponse

Function formatResponse

packages/res/src/format.ts:22–51  ·  view source on GitHub ↗
(
  req: Request,
  res: Response,
  next: Next
)

Source from the content-addressed store, hash-verified

20type Req = Pick<I, 'headers'>
21
22export const formatResponse = <Request extends Req = Req, Response extends Res = Res, Next extends next = next>(
23 req: Request,
24 res: Response,
25 next: Next
26) => (obj: FormatProps) => {
27 const fn = obj.default
28
29 if (fn) delete obj.default
30
31 const keys = Object.keys(obj)
32
33 const key = keys.length > 0 ? (getAccepts(req)(...keys) as string) : false
34
35 setVaryHeader(res)('Accept')
36
37 if (key) {
38 res.setHeader('Content-Type', normalizeType(key).value)
39 obj[key](req, res, next)
40 } else if (fn) {
41 fn()
42 } else {
43 const err = new Error('Not Acceptable') as FormatError
44 err.status = err.statusCode = 406
45 err.types = normalizeTypes(keys).map((o) => o.value)
46
47 next(err)
48 }
49
50 return res
51}

Callers 3

extendMiddlewareFunction · 0.90
redirectFunction · 0.90
res.test.tsFile · 0.90

Calls 4

getAcceptsFunction · 0.90
setVaryHeaderFunction · 0.90
normalizeTypeFunction · 0.90
normalizeTypesFunction · 0.90

Tested by

no test coverage detected