riotapi-js
Version:
Riot API written in NodeJS
93 lines (73 loc) • 3.03 kB
JavaScript
;
var Endpoint = require("./endpoint"),
util = require("./util"),
config = require("./config.json"),
_ = require("lodash");
var RiotApi = function(host, key) {
this.host = host;
this.key = key;
this.endpoints = configure(host, key);
};
RiotApi.prototype = (function() {
return {
// Internal helper
$query: function(endpoint, region, id) {
return this.endpoints[endpoint].query({
region: util.normalize(region),
id: util.normalize(id)
});
},
normalize: util.normalize,
// Summoner endpoints
findSummonerById: function(region, summonerId) {
return this.$query("summoner:findById", region, summonerId);
},
findSummonerByName: function(region, name) {
return this.$query("summoner:findByName", region, name);
},
findSummonerRunes: function(region, summonerId) {
return this.$query("summoner:findRunes", region, summonerId);
},
findSummonerMasteries: function(region, summonerId) {
return this.$query("summoner:findMasteries", region, summonerId);
},
findSummonerName: function(region, summonerId) {
return this.$query("summoner:findName", region, summonerId);
},
// League endpoints
findLeagueBySummoner: function(region, summonerId) {
return this.$query("league:findBySummoner", region, summonerId);
},
findLeagueByTeam: function(region, teamId) {
return this.$query("league:findByTeam", region, teamId);
},
findLeagueEntryBySummoner: function(region, summonerId) {
return this.$query("league:findEntryBySummoner", region, summonerId);
},
findLeagueEntryByTeam: function(region, teamId) {
return this.$query("league:findEntryByTeam", region, teamId);
},
findChallengers: function(region) {
return this.endpoints["league:findChallengers"].query({ region: util.normalize(region) });
},
findMasters: function(region) {
return this.endpoints["league:findMasters"].query({ region: util.normalize(region) });
}
}
})();
function configure(host, key) {
var qs = "api_key=" + encodeURIComponent(key),
endpoints = {};
_.forIn(config, function(v, key) {
var baseUrl = util.format(host + v.path, { version: v.version });
_.forIn(v.endpoints, function(endpoint, name) {
var url = baseUrl + endpoint.path,
postfix = (url.indexOf("?") >= 0 ? "&" : "?") + qs;
endpoints[key + ":" + name] = new Endpoint(url + postfix, endpoint);
});
});
return endpoints;
}
module.exports = function(host, key) {
return new RiotApi(host, key);
};