25 lines
627 B
TypeScript
25 lines
627 B
TypeScript
import { NextApiRequest, NextApiResponse } from "next"
|
|
import logging, { Logging } from "./logging"
|
|
|
|
export interface Result<T> {
|
|
message: string
|
|
statusCode?: number
|
|
body?: T
|
|
type?: Logging[]
|
|
redirectUrl?: string
|
|
}
|
|
|
|
export default function sendResponse<T>(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse<T>,
|
|
result: Result<T>,
|
|
) {
|
|
if (result.redirectUrl) {
|
|
res.redirect(result.statusCode ?? 307, result.redirectUrl)
|
|
} else {
|
|
res.status(result.statusCode ?? 200)
|
|
result.body ? res.json(result.body) : res.end()
|
|
logging(result.message, result.type ?? ["debug"], req)
|
|
}
|
|
return "done" as const
|
|
}
|