feat(apps.web.middleware): add apply middleware

Signed-off-by: Hanif Dwy Putra S <47862061+hansputera@users.noreply.github.com>
This commit is contained in:
Hanif Dwy Putra S
2022-07-29 12:48:31 +00:00
parent 90d2206479
commit 174b80548b

View File

@@ -0,0 +1,31 @@
import {NextApiRequest, NextApiResponse} from 'next';
type Middleware = (
request: NextApiRequest,
response: NextApiResponse,
) => Promise<undefined>;
export const applyRoute = (
route: (req: NextApiRequest, res: NextApiResponse) => Promise<void>,
middlewares: Middleware[],
) => {
return async (req: NextApiRequest, res: NextApiResponse) => {
const middleware:
| {
message: string;
status: number;
}
| undefined = await Promise.all(middlewares.map((m) => m(req, res)))
.catch((e) => ({
message: e.message,
status: 500,
}))
.then(() => undefined);
if (middleware)
return res.status(middleware.status).json({
message: middleware.message,
statusCode: middleware.status,
});
else return route(req, res);
};
};