import { embeddedTweet } from '../../src/api'; import Cors from 'cors'; // Initializing the cors middleware // You can read more about the available options here: https://github.com/expressjs/cors#configuration-options const cors = Cors({ methods: ['POST', 'GET', 'HEAD'], }); /** * Helper method to wait for a middleware to execute before continuing * And to throw an error when an error happens in a middleware * * @param {import("next").NextApiRequest} req * @param {import("next").NextApiResponse} res * @param { Function } fn */ function runMiddleware(req, res, fn) { return new Promise((resolve, reject) => { fn(req, res, (result) => { if (result instanceof Error) { return reject(result); } return resolve(result); }); }); } /** * Return content for embedding. * * @param {import("next").NextApiRequest} req * @param {import("next").NextApiResponse} res */ const oembed = async (req, res) => { let url = (req.query.url || '').toString(); await runMiddleware(req, res, cors); return embeddedTweet(url).then(result => { res.send(result); res.end(); }).catch(err => { console.log(`Err: ${err.response.status}`); res.status(err.response.status); res.send({}); res.end(); }); }; export default oembed;