UNPKG

apisailor-cli

Version:
105 lines (81 loc) 2.46 kB
const request_client = require('request-promise-native'); var express = require('express') var router = express.Router() var browser=null; var puppeteer=null; async function run() { var npm = require("npm"); if(puppeteer){ launchRecording("https://workspace.apisailor.com"); } else{ await npm.load({ loaded: false }, function (err) { // catch errors console.log({err}); npm.commands.install(["puppeteer"], function (er, data) { launchRecording("https://workspace.apisailor.com"); }); npm.on("log", function (message) { // log the progress of the installation console.log({message}); }); }); } } router.get('/v1/launch/recording', async function (req, res) { console.log('launching'); await run(); res.send({"msg": "Start successfully"}) }); router.get('/v1/launch/stop', async function (req, res) { if(browser){ await browser.close(); } res.send({"msg": "Stopped successfully"}) }); const launchRecording=(async (siteName) => { puppeteer=require('puppeteer') if(!browser) { browser = await puppeteer.launch({"headless": false,args: [ '--disable-web-security' ]}); } const page = await browser.newPage(); await page.setViewport({ width: 1166, height: 768}); const result = []; await page.setRequestInterception(true); page.on('request', request => { request_client({ uri: request.url(), resolveWithFullResponse: true, }).then(response => { const request_url = request.url(); const request_headers = request.headers(); const request_post_data = request.postData(); const response_headers = response.headers; const response_size = response_headers['content-length']; const response_body = response.body; result.push({ request_url //request_headers, //request_post_data, //response_headers, //response_size, //response_body, }); console.log({request_url}); request.continue(); }).catch(error => { console.error("error"); //request.abort(); request.continue(); }); }); await page.goto(siteName, { waitUntil: 'networkidle0', }); //await browser.close(); }); module.exports = router //run();