riot-api-stats
Version:
Riot API Stats service
43 lines (34 loc) • 2.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });var _axios = require('axios');var _axios2 = _interopRequireDefault(_axios);
var _querystring = require('querystring');var _querystring2 = _interopRequireDefault(_querystring);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");});};}
class Matchlist {
constructor(summonerId, region = 'euw', options = {}) {
this.summonerId = summonerId;
this.region = region;
this.options = Object.assign(options.beginTime || options.beginIndex || options.endTime || options.endIndex || options.seasons ? {} : {
beginTime: '1481108400000' },
options);
this.metadata = {};
this.matchlist = [];
}
load() {var _this = this;return _asyncToGenerator(function* () {
const url = `https://${_this.region}.api.riotgames.com/api/lol/${_this.region.toUpperCase()}/v2.2/matchlist/by-summoner/${_this.summonerId}`;
const query = _querystring2.default.stringify({
seasons: _this._toStringifyOption('seasons'),
rankedQueues: _this._toStringifyOption('rankedQueues'),
championIds: _this._toStringifyOption('championIds'),
beginTime: _this.options.beginTime,
endTime: _this.options.endTime,
beginIndex: _this.options.beginIndex,
endIndex: _this.options.endIndex,
api_key: process.env.RIOT_API_KEY });
let { data: { matches = [], startIndex, endIndex, totalGames } } = yield _axios2.default.get(`${url}?${query}`);
_this.metadata = { startIndex, endIndex, totalGames };
_this.matchlist = matches;
return { matchlist: matches, metadata: _this.metadata };})();
}
_toStringifyOption(key) {
if (!this.options[key]) {
return null;
}
return typeof this.options[key] === 'string' ? this.options[key] : this.options[key].join(',');
}}exports.default = Matchlist;
;