UNPKG

mstar-adsperformance

Version:

auto monitoring morningstar web pages ads performance

155 lines (126 loc) 6.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _puppeteer = require('puppeteer'); var _puppeteer2 = _interopRequireDefault(_puppeteer); var _DataCenter = require('./DataCenter'); var _DataCenter2 = _interopRequireDefault(_DataCenter); var _AdType = require('./AdType'); var _AdType2 = _interopRequireDefault(_AdType); var _RenderResult = require('./RenderResult'); var _RenderResult2 = _interopRequireDefault(_RenderResult); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var AdPerformance = function () { function AdPerformance() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, AdPerformance); this.config = config; } _createClass(AdPerformance, [{ key: 'run', value: function run() { var _this = this; // TODO check es6 how to assign object value var _config = this.config, urlArray = _config.urlArray, numbers = _config.numbers; // const numbers = this.config.numbers; var dataCenter = new _DataCenter2.default(); _puppeteer2.default.launch().then(async function (browser) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = urlArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var url = _step.value; dataCenter.addUrls(url); console.log('Start rendering page: ' + url); for (var i = 0; i < numbers; i++) { console.log('Loading times: ' + (i + 1)); var browserPage = await browser.newPage(); await browserPage.setViewport({ width: 1201, height: 3000 }); await browserPage.goto(url, { waitUntil: 'load', timeout: 0 }); var adTypes = _AdType2.default.getInstance().getAdTypes(); var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = adTypes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var type = _step2.value; await _this.collectDataForSpecificAd(browserPage, type, dataCenter, url); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } await browserPage.close(); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } await browser.close(); }).then(function () { var renderResult = new _RenderResult2.default(dataCenter.calculateData(), _this.config); renderResult.render(); renderResult.writeRealData(dataCenter.pageUrls); }); } }, { key: 'collectDataForSpecificAd', value: async function collectDataForSpecificAd(browserPage, type, dataCenter, url) { try { var adDataObject = await browserPage.$$eval('div[data-mod="' + type + '"]', function (divs) { return divs.map(function (div) { return { id: div.getAttribute('id'), dest: div.getAttribute('data-dest'), size: div.getAttribute('data-size'), position: div.getAttribute('data-pos'), generatetime: Number(div.getAttribute('data-generatetime')), setuptime: Number(div.getAttribute('data-setuptime')), rendertime: Number(div.getAttribute('data-rendertime')), renderadcontentstart: Number(div.getAttribute('data-renderadcontentstart')), renderadcontentend: Number(div.getAttribute('data-renderadcontentend')) }; }); }); await dataCenter.pushData(url, type, adDataObject); } catch (e) { console.log(e); } } }]); return AdPerformance; }(); exports.default = AdPerformance;