diff --git a/src/routes/api/takeSnap.js b/src/routes/api/takeSnap.js index 3306604..aa96936 100644 --- a/src/routes/api/takeSnap.js +++ b/src/routes/api/takeSnap.js @@ -1,36 +1,38 @@ const puppeteer = require('puppeteer'); const takeSnap = async (req, res) => { - console.log('req.body.url', req.body.url); - // Set CORS headers res.setHeader('Access-Control-Allow-Origin', '*'); // Allow all origins - res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS methods + res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // Allow Content-Type header + // Handle preflight request (OPTIONS) if (req.method === 'OPTIONS') { - res.status(200).end(); + res.status(200).end(); // Respond to preflight request return; } + + try { const url = req.body.url; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle2' }); - await page.screenshot({ path: 'screenshot.png', fullPage: true }); + // Take screenshot and convert to base64 + const screenshot = await page.screenshot({ encoding: 'base64', fullPage: true }); await browser.close(); - console.log('Screenshot saved as screenshot.png'); + console.log('Screenshot taken'); - // Send a response back to the client - res.status(200).json({ message: 'Screenshot saved as screenshot.png' }); + // Send the base64-encoded image in the response + res.status(200).json({ image: screenshot }); } catch (error) { console.error('Error taking screenshot:', error); res.status(500).json({ error: 'Failed to take screenshot' }); } }; -module.exports = takeSnap; \ No newline at end of file +module.exports = takeSnap; \ No newline at end of file