mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-06 21:07:47 +00:00
* [api] Add Sentry * Use function name * Add test error * Revert "Add test error" This reverts commit 39cf8a61dad9fcdcb616e418a0deb6ffe9e04ea9. * Revert "Revert "Add test error"" This reverts commit c718f201da9d80743319ac87e0d4560e718fff53. * Add logging * Revert "Add logging" This reverts commit 39cd46c8bbeef9024e71fe70478068480a51545b. * Revert "Revert "Revert "Add test error""" This reverts commit e6f63ee21fabb4ac8fc065b74281dbcdf5811216. * Ignore .env * Use init function for Sentry inline
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { NowRequest, NowResponse } from '@now/node';
|
|
import { errorHandler } from './error-handler';
|
|
|
|
type Handler = (req: NowRequest, res: NowResponse) => Promise<any>;
|
|
|
|
export function withApiHandler(handler: Handler): Handler {
|
|
return async (req: NowRequest, res: NowResponse) => {
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
res.setHeader('Access-Control-Allow-Methods', 'GET');
|
|
res.setHeader(
|
|
'Access-Control-Allow-Headers',
|
|
'Authorization, Accept, Content-Type'
|
|
);
|
|
|
|
if (req.method === 'OPTIONS') {
|
|
return res.status(200).json({});
|
|
}
|
|
|
|
if (req.method !== 'GET') {
|
|
return res.status(404).json({
|
|
error: {
|
|
code: 'not_found',
|
|
message: 'Only GET requests are supported for this endpoint.',
|
|
},
|
|
});
|
|
}
|
|
|
|
try {
|
|
const result = await handler(req, res);
|
|
return result;
|
|
} catch (error) {
|
|
errorHandler(error, {
|
|
url: req.url,
|
|
});
|
|
|
|
return res.status(500).json({
|
|
error: {
|
|
code: 'unexpected_error',
|
|
message: 'An unexpected error occurred.',
|
|
},
|
|
});
|
|
}
|
|
};
|
|
}
|