UNPKG

riot-api-stats

Version:

Riot API Stats service

54 lines (44 loc) 2.98 kB
'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _matchlist = require('./matchlist');var _matchlist2 = _interopRequireDefault(_matchlist); var _matches = require('./matches');var _matches2 = _interopRequireDefault(_matches); var _stats = require('./stats');var _stats2 = _interopRequireDefault(_stats); var _zmq = require('zmq');var _zmq2 = _interopRequireDefault(_zmq);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _asyncToGenerator(fn) {return function () {var gen = fn.apply(this, arguments);return new Promise(function (resolve, reject) {function step(key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {return Promise.resolve(value).then(function (value) {step("next", value);}, function (err) {step("throw", err);});}}return step("next");});};} const receiver = _zmq2.default.socket('pull'); const sender = _zmq2.default.socket('push'); class Worker { constructor({ ports = {}, processing = {}, onSuccess = null, onError = null }) { this.incomingPort = ports.incoming || 12345; this.outgoingPort = ports.outgoing || 12346; this.onMatchlist = processing.matchlist || (() => {}); this.onMatches = processing.matches || (() => {}); this.onStats = processing.stats || _stats2.default.fromMatches; this.onSuccess = onSuccess || (() => {}); this.onError = onError || (() => {}); } start() {var _this = this; receiver.connect(`tcp://127.0.0.1:${this.incomingPort}`); sender.connect(`tcp://127.0.0.1:${this.outgoingPort}`); receiver.on('message', (() => {var _ref = _asyncToGenerator(function* (data) { const startTime = process.hrtime(); data = JSON.parse(data); const summonerId = parseInt(data.summonerId); const region = data.region; try { const matchlist = new _matchlist2.default(summonerId, region); // , { beginTime: '1491053887327' } const { matchlist: matchlistData, metadata } = yield matchlist.load(); _this.onMatchlist(summonerId, region, matchlistData, metadata); const matchesData = yield _matches2.default.getFromMatchlist(matchlistData); _this.onMatches(region, matchesData); const statsData = _this.onStats(summonerId, region, matchesData); sender.send(JSON.stringify({ stats: statsData, metadata: Object.assign({}, metadata, { summonerId, region }), status: { success: true } })); } catch (err) { console.log(err); sender.send(JSON.stringify({ status: { success: false } })); } const processingTime = process.hrtime(startTime); console.log(`Done in ${(processingTime[0] + processingTime[1] * 1e-9).toFixed(3)}s`); });return function (_x) {return _ref.apply(this, arguments);};})()); }}exports.default = Worker;