riot-api-stats
Version:
Riot API Stats service
54 lines (44 loc) • 2.98 kB
JavaScript
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;
;