yahoo-fantasy
Advanced tools
Comparing version 0.1.2 to 0.2.0
var _ = require('lodash'); | ||
var gameHelper = require('../helpers/gameHelper.js'); | ||
@@ -11,10 +12,29 @@ module.exports = function() { | ||
GamesCollection.prototype.fetch = function(gameKeys, filters, cb) { | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/games;game_keys='; | ||
// params: game keys or filters, subresources (optional), callback | ||
GamesCollection.prototype.fetch = function() { | ||
var gameKeys = '', //arguments[0], | ||
subresources = '', | ||
filters = {}, | ||
cb = arguments[arguments.length - 1]; | ||
if ( _.isString(gameKeys) ) { | ||
// there should be a better way... | ||
if ( _.isObject(arguments[0]) ) { | ||
// filters | ||
filters = arguments[0]; | ||
} else { | ||
// game key(s) | ||
gameKeys = arguments[0]; | ||
} | ||
subresources = arguments[1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/games'; | ||
if ( _.isString(gameKeys) && !_.isEmpty(gameKeys) ) { | ||
gameKeys = [gameKeys]; | ||
} | ||
url += gameKeys.join(','); | ||
if ( !(_.isEmpty(gameKeys)) ) { | ||
url += ';game_keys=' + gameKeys.join(','); | ||
} | ||
@@ -27,2 +47,10 @@ if ( !( _.isEmpty(filters) ) ) { | ||
if ( _.isString(subresources) && !_.isEmpty(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
if ( !(_.isEmpty(subresources)) ) { | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json'; | ||
@@ -33,9 +61,36 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var games = gameHelper.parseCollection(data.fantasy_content.games, subresources); | ||
cb(meta); | ||
cb(null, games); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; | ||
GamesCollection.prototype.user = function(filters, cb) { | ||
GamesCollection.prototype.user = function() { | ||
// no gamekeys... | ||
var subresources = '', | ||
filters = {}, | ||
cb = arguments[arguments.length - 1]; | ||
switch (arguments.length) { | ||
case 2: | ||
if ( _.isObject(arguments[0]) ) { | ||
filters = arguments[0]; | ||
} else { | ||
subresources = arguments[0]; | ||
} | ||
break; | ||
case 3: | ||
filters = arguments[0]; | ||
subresources = arguments[1]; | ||
break; | ||
default: | ||
break; | ||
}; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1/games'; | ||
@@ -49,14 +104,32 @@ | ||
if ( _.isString(subresources) && !_.isEmpty(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
if ( !(_.isEmpty(subresources)) ) { | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json'; | ||
console.log(url); | ||
this | ||
.api(url) | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var games = gameHelper.parseCollection(data.fantasy_content.users[0].user[1].games, subresources); | ||
cb(meta); | ||
cb(null, games); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; | ||
GamesCollection.prototype.userFetch = function(filters, cb) { | ||
GamesCollection.prototype.userFetch = function() { | ||
// no filters... | ||
var gameKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1/games;game_keys='; | ||
@@ -70,6 +143,4 @@ | ||
if ( !( _.isEmpty(filters) ) ) { | ||
_.each(Object.keys(filters), function(key) { | ||
url += ';' + key + '=' + filters[key]; | ||
}); | ||
if ( !(_.isEmpty(subresources)) ) { | ||
url += ';out=' + subresources.join(','); | ||
} | ||
@@ -82,6 +153,12 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var user = data.fantasy_content.users[0].user[0]; | ||
var games = gameHelper.parseCollection(data.fantasy_content.users[0].user[1].games, subresources); | ||
cb(meta); | ||
user.games = games; | ||
cb(null, user); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
var _ = require('lodash'); | ||
var leagueHelper = require('../helpers/leagueHelper.js'); | ||
@@ -11,5 +12,10 @@ module.exports = function() { | ||
LeaguesCollection.prototype.fetch = function(leagueKeys, resources, cb) { | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/leagues/;league_keys='; | ||
// totally making "fetch" happen... | ||
LeaguesCollection.prototype.fetch = function() { | ||
var leagueKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/leagues;league_keys='; | ||
if ( _.isString(leagueKeys) ) { | ||
@@ -19,21 +25,25 @@ leagueKeys = [leagueKeys]; | ||
url += leagueKeys.split(','); | ||
url += leagueKeys.join(','); | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
if ( resources.length > 0 ) { | ||
url += ';out=' + resources.split(','); | ||
if ( subresources.length > 0 ) { | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json' | ||
url += '?format=json'; | ||
console.log(url); | ||
this | ||
.api(url) | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var leagues = leagueHelper.parseCollection(data.fantasy_content.leagues, subresources); | ||
cb(meta); | ||
cb(null, leagues); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
var _ = require('lodash'); | ||
var playerHelper = require('../helpers/playerHelper.js'); | ||
@@ -11,3 +12,7 @@ module.exports = function() { | ||
PlayersCollection.prototype.fetch = function(playerKeys, resources, filters, cb) { | ||
PlayersCollection.prototype.fetch = function() { | ||
var playerKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/players;player_keys=' | ||
@@ -21,16 +26,10 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
if ( !( _.isEmpty(filters) ) ) { | ||
_.each(Object.keys(filters), function(key) { | ||
url += ';' + key + '=' + filters[key]; | ||
}); | ||
} | ||
url += '?format=json' | ||
@@ -41,10 +40,18 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var players = playerHelper.parseCollection(data.fantasy_content.players, subresources); | ||
cb(meta); | ||
}); | ||
cb(null, players); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; | ||
// ignoring the single b/c filters | ||
PlayersCollection.prototype.leagueFetch = function(leagueKeys, resources, filters, cb) { | ||
PlayersCollection.prototype.leagues = function() { | ||
var leagueKeys = arguments[0], | ||
filters = ( arguments.length > 3 ) ? arguments[1] : ( arguments.length > 2 && _.isObject( arguments[1]) ) ? arguments[1] : {}, | ||
subresources = ( arguments.length > 3 ) ? arguments[2] : ( arguments.length > 2 && _.isArray( arguments[1]) ) ? arguments[1] : [], // ugliest line of code ever? | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/leagues;league_keys=' | ||
@@ -59,8 +66,8 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
@@ -79,9 +86,18 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
console.log(data.fantasy_content); | ||
var leagues = playerHelper.parseLeagueCollection(data.fantasy_content.leagues, subresources); | ||
cb(meta); | ||
}); | ||
cb(null, leagues); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; | ||
PlayersCollection.prototype.teamFetch = function(teamKeys, resources, filters, cb) { | ||
PlayersCollection.prototype.teams = function() { | ||
var teamKeys = arguments[0], | ||
filters = ( arguments.length > 3 ) ? arguments[1] : ( arguments.length > 2 && _.isObject( arguments[1]) ) ? arguments[1] : {}, | ||
subresources = ( arguments.length > 3 ) ? arguments[2] : ( arguments.length > 2 && _.isArray( arguments[1]) ) ? arguments[1] : [], // ugliest line of code ever? | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/teams;team_keys=' | ||
@@ -96,8 +112,8 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
@@ -116,6 +132,9 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var teams = playerHelper.parseTeamCollection(data.fantasy_content.teams, subresources); | ||
cb(meta); | ||
cb(null, teams); | ||
}, function(e) { | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
var _ = require('lodash'); | ||
var teamHelper = require('../helpers/teamHelper.js'); | ||
@@ -11,7 +12,11 @@ module.exports = function() { | ||
TeamsCollection.prototype.fetch = function(teamKeys, resources, cb) { | ||
TeamsCollection.prototype.fetch = function() { | ||
var teamKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/teams;team_keys='; | ||
if ( _.isString(teamKeys) ) { | ||
teamKeys = [teamKeys] | ||
teamKeys = teamKeys.split(','); | ||
} | ||
@@ -21,11 +26,11 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json' | ||
url += '?format=json'; | ||
@@ -35,9 +40,13 @@ this | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var teams = teamHelper.parseCollection(data.fantasy_content.teams, subresources); | ||
cb(meta); | ||
cb(teams); | ||
}); | ||
}; | ||
TeamsCollection.prototype.leagueFetch = function(leagueKeys, resources, cb) { | ||
TeamsCollection.prototype.leagues = function() { | ||
var leagueKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/leagues;league_keys='; | ||
@@ -52,11 +61,11 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json' | ||
url += '?format=json'; | ||
@@ -66,20 +75,23 @@ this | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var leagues = teamHelper.parseLeagueCollection(data.fantasy_content.leagues, subresources); | ||
cb(meta); | ||
cb(leagues); | ||
}); | ||
}; | ||
TeamsCollection.prototype.usersFetch = function(resources, cb) { | ||
TeamsCollection.prototype.userFetch = function() { | ||
var subresources = ( arguments.length > 1 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1/teams'; | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json' | ||
url += '?format=json'; | ||
@@ -89,9 +101,13 @@ this | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var games = teamHelper.parseGameCollection(data.fantasy_content.users[0].user[1].games, subresources); | ||
cb(meta); | ||
cb(games); | ||
}); | ||
}; | ||
TeamsCollection.prototype.gameFetch = function(gameKeys, resources, cb) { | ||
TeamsCollection.prototype.games = function() { | ||
var gameKeys = arguments[0], | ||
subresources = ( arguments.length > 2 ) ? arguments[1] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1/games;game_keys='; | ||
@@ -106,11 +122,11 @@ | ||
if ( !( _.isEmpty(resources) ) ) { | ||
if ( _.isString(resources) ) { | ||
resources = [resources]; | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + resources.join(','); | ||
url += ';out=' + subresources.join(','); | ||
} | ||
url += '?format=json' | ||
url += '?format=json'; | ||
@@ -120,8 +136,6 @@ this | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var games = teamHelper.parseGameCollection(data.fantasy_content.users[0].user[1].games, subresources); | ||
cb(meta); | ||
cb(games); | ||
}); | ||
}; | ||
@@ -79,1 +79,3 @@ var _ = require('lodash'); | ||
}; | ||
// todo: http://fantasysports.yahooapis.com/fantasy/v2/league/{league_key}/transactions;types=waiver,pending_trade;team_key={team_key} |
@@ -1,2 +0,3 @@ | ||
var util = require('util'); | ||
var _ = require('lodash'); | ||
var userHelper = require('../helpers/userHelper.js'); | ||
@@ -11,9 +12,15 @@ module.exports = function() { | ||
UsersCollection.prototype.fetch = function(resources, cb) { | ||
// this doesn't seem super useful... | ||
UsersCollection.prototype.fetch = function() { | ||
var subresources = ( arguments.length > 1 ) ? arguments[0] : [], | ||
cb = arguments[arguments.length - 1]; | ||
var url = 'http://fantasysports.yahooapis.com/fantasy/v2/users;use_login=1'; | ||
if ( util.isArray(resources) ) { | ||
url += ';out=' + resources.split(,); | ||
} else if ( 'string' == typeof(resources) ) { | ||
url += ';out=' + resources | ||
if ( !( _.isEmpty(subresources) ) ) { | ||
if ( _.isString(subresources) ) { | ||
subresources = [subresources]; | ||
} | ||
url += ';out=' + subresources.join(','); | ||
} | ||
@@ -26,6 +33,6 @@ | ||
.then(function(data) { | ||
var meta = data.fantasy_content; | ||
var user = userHelper.parseCollection(data.fantasy_content.users[0].user); | ||
cb(meta); | ||
cb(user); | ||
}); | ||
}; |
var _ = require('lodash'); | ||
var playerHelper = require('./playerHelper.js'); | ||
var teamHelper = require('./teamHelper.js'); | ||
exports.leaguesMap = function(leagues) { | ||
exports.mapLeagues = function(leagues) { | ||
leagues = _.filter(leagues, function(l) { return typeof(l) == 'object'; }); | ||
@@ -12,3 +13,3 @@ leagues = _.map(leagues, function(l) { return l.league[0]; }); | ||
// todo: again, this should be more re-usable | ||
exports.playersMap = function(players) { | ||
exports.mapPlayers = function(players) { | ||
players = _.filter(players, function(p) { return typeof(p) == 'object'; }); | ||
@@ -20,3 +21,3 @@ players = _.map(players, function(p) { return playerHelper.mapPlayer(p.player[0]); }); | ||
exports.weeksMap = function(weeks) { | ||
exports.mapWeeks = function(weeks) { | ||
weeks = _.filter(weeks, function(w) { return typeof(w) == 'object'; }); | ||
@@ -28,3 +29,3 @@ weeks = _.map(weeks, function(w) { return w.game_week; }); | ||
exports.statCategoriesMap = function(statcats) { | ||
exports.mapStatCategories = function(statcats) { | ||
statcats = _.filter(statcats, function(s) { return typeof(s) == 'object'; }); | ||
@@ -48,3 +49,3 @@ statcats = _.map(statcats, function(s) { return s.stat; }); | ||
exports.positionTypesMap = function(positions) { | ||
exports.mapPositionTypes = function(positions) { | ||
positions = _.filter(positions, function(p) { return typeof(p) == 'object'; }); | ||
@@ -56,3 +57,3 @@ positions = _.map(positions, function(p) { return p.position_type; }); | ||
exports.rosterPositionsMap = function(positions) { | ||
exports.mapRosterPositions = function(positions) { | ||
positions = _.filter(positions, function(p) { return typeof(p) == 'object'; }); | ||
@@ -63,1 +64,57 @@ positions = _.map(positions, function(p) { return p.roster_position; }); | ||
}; | ||
exports.mapTeams = function(teams) { | ||
teams = _.filter(teams, function(t) { return typeof(t) == 'object'; }); | ||
teams = _.map(teams, function(t) { return teamHelper.mapTeam(t.team[0]); }); | ||
return teams; | ||
}; | ||
exports.parseCollection = function(games, subresources) { | ||
var self = this; | ||
games = _.filter(games, function(g) { return typeof(g) == 'object'; }); | ||
games = _.map(games, function(g) { return g.game; }); | ||
games = _.map(games, function(g) { | ||
var game = g[0]; | ||
_.forEach(subresources, function(resource, idx) { | ||
switch (resource) { | ||
case 'leagues': | ||
game.leagues = self.mapLeagues(g[idx + 1].leagues); | ||
break; | ||
case 'players': | ||
game.players = self.mapPlayers(g[idx + 1].players); | ||
break; | ||
case 'game_weeks': | ||
game.game_weeks = self.mapWeeks(g[idx + 1].game_weeks); | ||
break; | ||
case 'stat_categories': | ||
game.stat_categories = self.mapStatCategories(g[idx + 1].stat_categories.stats); | ||
break; | ||
case 'position_types': | ||
game.position_types = self.mapPositionTypes(g[idx + 1].position_types); | ||
break; | ||
case 'roster_positions': | ||
game.roster_positions = self.mapRosterPositions(g[idx + 1].roster_positions); | ||
break; | ||
case 'teams': | ||
game.teams = self.mapTeams(g[idx + 1].teams); | ||
break; | ||
default: | ||
break; | ||
} | ||
}); | ||
return game; | ||
}); | ||
return games; | ||
}; |
@@ -8,3 +8,3 @@ var _ = require('lodash'); | ||
*/ | ||
exports.teamsMap = function(teams) { | ||
exports.mapTeams = function(teams) { | ||
teams = _.filter(teams, function(t) { return typeof(t) == 'object'; }); | ||
@@ -26,3 +26,3 @@ teams = _.map(teams, function(t) { return teamHelper.mapTeam(t.team[0]); }); | ||
exports.settingsMap = function(settings) { | ||
exports.mapSettings = function(settings) { | ||
settings.stat_categories = _.map( | ||
@@ -44,3 +44,3 @@ settings.stat_categories.stats, | ||
exports.draftMap = function(draft) { | ||
exports.mapDraft = function(draft) { | ||
draft = _.filter(draft, function(d) { return typeof(d) == 'object'; }); | ||
@@ -52,3 +52,3 @@ draft = _.map(draft, function(d) { return d.draft_result; }) | ||
exports.scoreboardMap = function(scoreboard) { | ||
exports.mapScoreboard = function(scoreboard) { | ||
var self = this; | ||
@@ -82,3 +82,3 @@ // is this only for h2h? what about roto, and points? | ||
exports.transactionMap = function(transactions) { | ||
exports.mapTransactions = function(transactions) { | ||
var transactions = _.filter(transactions, function(t) { return typeof(t) == 'object'; }); | ||
@@ -102,1 +102,46 @@ transactions = _.map(transactions, function(t) { return t.transaction; }); | ||
}; | ||
exports.parseCollection = function(leagues, subresources) { | ||
var self = this; | ||
leagues = _.filter(leagues, function(l) { return typeof(l) == 'object'; }); | ||
leagues = _.map(leagues, function(l) { return l.league; }); | ||
leagues = _.map(leagues, function(l) { | ||
var league = l[0]; | ||
_.forEach(subresources, function(resource, idx) { | ||
switch (resource) { | ||
case 'settings': | ||
league.settings = self.mapSettings(l[idx + 1].settings[0]); | ||
break; | ||
case 'standings': | ||
league.standings = self.mapStandings(l[idx + 1].standings[0].teams); | ||
break; | ||
case 'scoreboard': | ||
league.scoreboard = self.mapScoreboard(l[idx + 1].scoreboard[0].matchups); | ||
break; | ||
case 'teams': | ||
league.teams = self.mapTeams(l[idx + 1].teams); | ||
break; | ||
case 'draftresults': | ||
league.draftresults = self.mapDraft(l[idx + 1].draft_results); | ||
break; | ||
case 'transactions': | ||
league.transactions = self.mapTransactions(l[idx + 1].transactions); | ||
break; | ||
default: | ||
break; | ||
} | ||
}); | ||
return league; | ||
}); | ||
return leagues; | ||
}; |
var _ = require('lodash'); | ||
var teamHelper = require('./teamHelper.js'); | ||
exports.mapPlayer = function(player) { | ||
// why this is necessary i will never understand | ||
var offset = 0; | ||
if ( 15 < player.length ) { | ||
offset = 1; | ||
} | ||
var playerObj = {}; | ||
var key; | ||
return { | ||
player_key: player[0].player_key, | ||
player_id: player[1].player_id, | ||
name: player[2].name, | ||
editorial_player_key: player[3].editorial_player_key, | ||
editorial_team_key: player[4].editorial_team_key, | ||
editorial_team_full_name: player[5].editorial_team_full_name, | ||
editorial_team_abbr: player[6].editorial_team_abbr, | ||
uniform_number: player[7].uniform_number, | ||
display_position: player[8].display_position, | ||
headshot: player[9 + offset].headshot.url, | ||
is_undroppable: player[10 + offset].is_undroppable, | ||
position_type: player[11 + offset].position_type, | ||
eligible_positions: _.map(player[12 + offset].eligible_positions, function(p) { return p.position; }) | ||
}; | ||
_.forEach(player, function(obj) { | ||
key = _.keys(obj)[0]; | ||
if ( !_.isUndefined(key) ) { | ||
playerObj[key] = obj[key]; | ||
} | ||
}); | ||
playerObj.eligible_positions = _.map( | ||
playerObj.eligible_positions, | ||
function(p) { return p.position; } | ||
); | ||
return playerObj; | ||
}; | ||
@@ -54,2 +50,69 @@ | ||
} | ||
} | ||
}; | ||
exports.parseCollection = function(players, subresources) { | ||
var self = this; | ||
players = _.filter(players, function(p) { return typeof(p) == 'object'; }); | ||
players = _.map(players, function(p) { return p.player; }); | ||
players = _.map(players, function(p) { | ||
var player = self.mapPlayer(p[0]); | ||
_.forEach(subresources, function(resource, idx) { | ||
switch (resource) { | ||
case 'stats': | ||
player.stats = self.mapStats(p[idx + 1].player_stats); | ||
break; | ||
case 'percent_owned': // todo: clean this up and in resource | ||
player.percent_owned = p[idx + 1].percent_owned; | ||
break; | ||
case 'ownership': | ||
player.ownership = p[idx + 1].ownership; | ||
break; | ||
case 'draft_analysis': | ||
player.draft_analysis = self.mapDraftAnalysis(p[idx + 1].draft_analysis); | ||
break; | ||
default: | ||
break; | ||
} | ||
}); | ||
return player; | ||
}); | ||
return players; | ||
}; | ||
exports.parseLeagueCollection = function(leagues, subresources) { | ||
var self = this; | ||
leagues = _.filter(leagues, function(l) { return typeof(l) == 'object'; }); | ||
leagues = _.map(leagues, function(l) { return l.league; }); | ||
leagues = _.map(leagues, function(l) { | ||
var league = l[0]; | ||
league.players = self.parseCollection(l[1].players, subresources); | ||
return league; | ||
}); | ||
return leagues; | ||
}; | ||
exports.parseTeamCollection = function(teams, subresources) { | ||
var self = this; | ||
teams = _.filter(teams, function(t) { return typeof(t) == 'object'; }); | ||
teams = _.map(teams, function(t) { return t.team; }); | ||
teams = _.map(teams, function(t) { | ||
var team = teamHelper.mapTeam(t[0]); | ||
team.players = self.parseCollection(t[1].players, subresources); | ||
return team; | ||
}); | ||
return teams; | ||
}; |
var _ = require('lodash'); | ||
var leagueHelper = require('./leagueHelper.js'); | ||
var playerHelper = require('./playerHelper.js'); | ||
var leagueHelper = require('./leagueHelper.js'); | ||
@@ -36,3 +36,3 @@ // todo: use this where possible... | ||
exports.statsMap = function(stats) { | ||
exports.mapStats = function(stats) { | ||
stats.stats = _.map(stats.stats, function(s) { return s.stat; }); | ||
@@ -43,3 +43,3 @@ | ||
exports.draftMap = function(draft) { | ||
exports.mapDraft = function(draft) { | ||
draft = _.filter(draft, function(d) { return typeof(d) == 'object'; }); | ||
@@ -52,3 +52,2 @@ draft = _.map(draft, function(d) { return d.draft_result; }); | ||
// todo: this gotta be cleaned up | ||
exports.mapMatchups = function(matchups) { | ||
@@ -59,3 +58,2 @@ var self = this; | ||
matchups = _.map(matchups, function(m) { return m.matchup; }); | ||
debugger; | ||
matchups = _.map(matchups, function(m) { | ||
@@ -79,1 +77,91 @@ var teams = _.filter(m[0].teams, function(t) { return typeof(t) == 'object'; }); | ||
} | ||
exports.parseCollection = function(teams, subresources) { | ||
var self = this; | ||
teams = _.filter(teams, function(t) { return typeof(t) == 'object'; }); | ||
teams = _.map(teams, function(t) { return t.team; }); | ||
teams = _.map(teams, function(t) { | ||
// this is only here because user games collection is adding an extra null | ||
// and I cannot for the life of me figure out why. | ||
_.remove(t, function(o) { return _.isNull(o); }); | ||
var team = self.mapTeam(t[0]); | ||
_.forEach(subresources, function(resource, idx) { | ||
switch (resource) { | ||
case 'stats': | ||
team.stats = self.mapStats(t[idx + 1].team_stats); | ||
break; | ||
case 'standings': | ||
team.standings = t[idx + 1].team_standings; | ||
break; | ||
case 'roster': | ||
team.roster = self.mapRoster(t[idx + 1].roster); | ||
break; | ||
case 'draftresults': | ||
team.draftresults = self.mapDraft(t[idx + 1].draft_results); | ||
break; | ||
case 'matchups': | ||
team.matchups = self.mapMatchups(t[idx + 1].matchups); | ||
break; | ||
default: | ||
break; | ||
} | ||
}); | ||
return team; | ||
}); | ||
return teams; | ||
}; | ||
exports.parseLeagueCollection = function(leagues, subresources) { | ||
var self = this; | ||
leagues = _.filter(leagues, function(l) { return typeof(l) == 'object'; }); | ||
leagues = _.map(leagues, function(l) { return l.league; }); | ||
leagues = _.map(leagues, function(l) { | ||
var league = l[0]; | ||
league.teams = self.parseCollection(l[1].teams, subresources); | ||
return league; | ||
}); | ||
return leagues; | ||
}; | ||
exports.parseTeamCollection = function(teams, subresources) { | ||
var self = this; | ||
teams = _.filter(teams, function(t) { return typeof(t) == 'object'; }); | ||
teams = _.map(teams, function(t) { return t.team; }); | ||
teams = _.map(teams, function(t) { | ||
var team = teamHelper.mapTeam(t[0]); | ||
team.players = self.parseCollection(t[1].players, subresources); | ||
return team; | ||
}); | ||
return teams; | ||
}; | ||
exports.parseGameCollection = function(games, subresources) { | ||
var self = this; | ||
games = _.filter(games, function(g) { return typeof(g) == 'object'; }); | ||
games = _.map(games, function(g) { return g.game; }); | ||
games = _.map(games, function(g) { | ||
var game = g[0]; | ||
game.teams = self.parseCollection(g[1].teams, subresources); | ||
return game; | ||
}); | ||
return games; | ||
}; |
@@ -42,1 +42,26 @@ var _ = require('lodash'); | ||
}; | ||
exports.parseCollection = function(user, subresources) { | ||
var self = this; | ||
_.forEach(subresources, function(resource, idx) { | ||
switch (resource) { | ||
case 'games': | ||
user.games = self.mapGames(t[idx + 1].games); | ||
break; | ||
case 'leagues': | ||
user.leagues = self.mapUserLeagues(t[idx + 1].leagues); | ||
break; | ||
case 'teams': | ||
user.teams = self.mapUserTeams(t[idx + 1].teams); | ||
break; | ||
default: | ||
break; | ||
} | ||
}); | ||
return user; | ||
}; |
36
index.js
@@ -19,5 +19,5 @@ 'use strict'; | ||
teamsCollection = require('./collections/teamsCollection.js'), | ||
leaguesCollection = require('./collections/leaguesCollection.js'), | ||
transactionsCollection = require('./collections/transactionsCollection.js'), | ||
usersCollection = require('./collections/transactionsCollection.js'); | ||
leaguesCollection = require('./collections/leaguesCollection.js'); | ||
// transactionsCollection = require('./collections/transactionsCollection.js') | ||
// usersCollection = require('./collections/usersCollection.js'); | ||
@@ -46,6 +46,6 @@ function YahooFantasy(consumerKey, consumerSecret) { | ||
transaction: transactionResource(), | ||
transactions: transactionsCollection(), | ||
// transactions: transactionsCollection(), | ||
roster: rosterResource(), | ||
user: userResource(), | ||
users: usersCollection(), | ||
// users: usersCollection(), | ||
yuser: { | ||
@@ -108,9 +108,14 @@ token: null, | ||
this.players.fetch = _.bind(this.players.fetch, this); | ||
this.players.leagueFetch = _.bind(this.players.leagueFetch, this); | ||
this.players.teamFetch = _.bind(this.players.teamFetch, this); | ||
this.players.leagues = _.bind(this.players.leagues, this); | ||
this.players.teams = _.bind(this.players.teams, this); | ||
this.transactions.fetch = _.bind(this.transactions.fetch, this); | ||
this.transactions.leagueFetch = _.bind(this.transactions.leagueFetch, this); | ||
this.teams.fetch = _.bind(this.teams.fetch, this); | ||
this.teams.userFetch = _.bind(this.teams.userFetch, this); | ||
this.teams.leagues = _.bind(this.teams.leagues, this); | ||
this.teams.games = _.bind(this.teams.games, this); | ||
this.users.fetch = _.bind(this.users.fetch, this); | ||
// this.transactions.fetch = _.bind(this.transactions.fetch, this); | ||
// this.transactions.leagueFetch = _.bind(this.transactions.leagueFetch, this); | ||
// this.users.fetch = _.bind(this.users.fetch, this); | ||
} | ||
@@ -134,2 +139,3 @@ | ||
if (e) { | ||
console.log(e); | ||
if (401 == e.statusCode) { | ||
@@ -156,6 +162,6 @@ // need to re-authorize the user token | ||
YahooFantasy.prototype.err = function(e, cb) { | ||
cb({ | ||
error: e.error.description | ||
}); | ||
}; | ||
// YahooFantasy.prototype.err = function(e, cb) { | ||
// cb({ | ||
// error: e.error.description | ||
// }); | ||
// }; |
{ | ||
"name": "yahoo-fantasy", | ||
"version": "0.1.2", | ||
"version": "0.2.0", | ||
"description": "An API to help facilitate the use of the Yahoo! Fantasy Sports API in NodeJS projects.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -44,3 +44,4 @@ Yahoo! Fantasy API Node Module | ||
{possible argument(s)}, | ||
function cb(data) { | ||
function cb(err, data) { | ||
// handle error | ||
// callback function | ||
@@ -58,2 +59,7 @@ // do your thing | ||
#### 0.2.0 | ||
* Made helper classes more consistent | ||
* Added collections for games, leagues, players, and teams | ||
* Moved to error first convention because JavaScript | ||
#### 0.1.2 | ||
@@ -60,0 +66,0 @@ * Added 'Team Matchups' subresource |
@@ -21,5 +21,6 @@ var _ = require('lodash'); | ||
cb(meta); | ||
cb(null, meta); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -39,3 +40,3 @@ }; | ||
.then(function(data) { | ||
var leagues = gameHelper.leaguesMap(data.fantasy_content.game[1].leagues); | ||
var leagues = gameHelper.mapLeagues(data.fantasy_content.game[1].leagues); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -45,5 +46,6 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -62,3 +64,3 @@ }; | ||
.then(function(data) { | ||
var players = gameHelper.playersMap(data.fantasy_content.game[1].players); | ||
var players = gameHelper.mapPlayers(data.fantasy_content.game[1].players); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -68,5 +70,6 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -81,3 +84,3 @@ }; | ||
.then(function(data) { | ||
var weeks = gameHelper.weeksMap(data.fantasy_content.game[1].game_weeks); | ||
var weeks = gameHelper.mapWeeks(data.fantasy_content.game[1].game_weeks); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -87,5 +90,6 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -100,3 +104,3 @@ }; | ||
.then(function(data) { | ||
var stat_categories = gameHelper.statCategoriesMap(data.fantasy_content.game[1].stat_categories.stats); | ||
var stat_categories = gameHelper.mapStatCategories(data.fantasy_content.game[1].stat_categories.stats); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -106,5 +110,6 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -119,3 +124,3 @@ }; | ||
.then(function(data) { | ||
var position_types = gameHelper.positionTypesMap(data.fantasy_content.game[1].position_types); | ||
var position_types = gameHelper.mapPositionTypes(data.fantasy_content.game[1].position_types); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -125,5 +130,6 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -138,3 +144,3 @@ }; | ||
.then(function(data) { | ||
var roster_positions = gameHelper.rosterPositionsMap(data.fantasy_content.game[1].roster_positions); | ||
var roster_positions = gameHelper.mapRosterPositions(data.fantasy_content.game[1].roster_positions); | ||
var game = data.fantasy_content.game[0]; | ||
@@ -144,6 +150,7 @@ | ||
cb(game); | ||
cb(null, game); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
@@ -19,5 +19,6 @@ var leagueHelper = require('../helpers/leagueHelper.js'); | ||
cb(meta); | ||
cb(null, meta); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -32,3 +33,3 @@ }; | ||
.then(function(data) { | ||
var settings = leagueHelper.settingsMap(data.fantasy_content.league[1].settings[0]); | ||
var settings = leagueHelper.mapSettings(data.fantasy_content.league[1].settings[0]); | ||
var league = data.fantasy_content.league[0]; | ||
@@ -38,5 +39,6 @@ | ||
cb(settings); | ||
cb(null, settings); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -57,5 +59,6 @@ } | ||
cb(league); | ||
cb(null, league); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -73,3 +76,3 @@ }; | ||
var week = data.fantasy_content.league[1].scoreboard.week; | ||
var scoreboard = leagueHelper.scoreboardMap(data.fantasy_content.league[1].scoreboard[0].matchups); | ||
var scoreboard = leagueHelper.mapScoreboard(data.fantasy_content.league[1].scoreboard[0].matchups); | ||
var league = data.fantasy_content.league[0]; | ||
@@ -80,5 +83,6 @@ | ||
cb(league); | ||
cb(null, league); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -93,3 +97,3 @@ }; | ||
.then(function(data) { | ||
var teams = leagueHelper.teamsMap(data.fantasy_content.league[1].teams); | ||
var teams = leagueHelper.mapTeams(data.fantasy_content.league[1].teams); | ||
var league = data.fantasy_content.league[0]; | ||
@@ -99,5 +103,6 @@ | ||
cb(league); | ||
cb(null, league); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -115,5 +120,6 @@ }; | ||
cb(players); | ||
cb(null, players); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -128,3 +134,3 @@ }; | ||
.then(function(data) { | ||
var draft = leagueHelper.draftMap(data.fantasy_content.league[1].draft_results); | ||
var draft = leagueHelper.mapDraft(data.fantasy_content.league[1].draft_results); | ||
var league = data.fantasy_content.league[0]; | ||
@@ -134,5 +140,6 @@ | ||
cb(league); | ||
cb(null, league); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -147,3 +154,3 @@ }; | ||
.then(function(data) { | ||
var transactions = leagueHelper.transactionMap(data.fantasy_content.league[1].transactions); | ||
var transactions = leagueHelper.mapTransactions(data.fantasy_content.league[1].transactions); | ||
var league = data.fantasy_content.league[0]; | ||
@@ -153,6 +160,7 @@ | ||
cb(league); | ||
cb(null, league); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
@@ -23,5 +23,6 @@ var playerHelper = require('../helpers/playerHelper.js'); | ||
cb(meta); | ||
cb(null, meta); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -48,5 +49,6 @@ }; | ||
cb(player); | ||
cb(null, player); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -64,3 +66,3 @@ }; | ||
.then(function(data) { | ||
var ownership = data.fantasy_content.player[1].percent_owned[1]; | ||
var percent_owned = data.fantasy_content.player[1].percent_owned[1]; | ||
var player = playerHelper.mapPlayer(data.fantasy_content.player[0]); | ||
@@ -71,7 +73,8 @@ | ||
player.ownership = ownership; | ||
player.percent_owned = percent_owned; | ||
cb(player); | ||
cb(null, player); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -105,5 +108,6 @@ }; | ||
cb(player); | ||
cb(null, player); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -126,6 +130,7 @@ }; | ||
cb(player); | ||
cb(null, player); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
@@ -22,6 +22,10 @@ var teamHelper = require('../helpers/teamHelper.js'); | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; | ||
// todo: need to add date, week | ||
// https://developer.yahoo.com/fantasysports/guide/roster-resource.html#roster-resource-desc |
@@ -19,5 +19,6 @@ var teamHelper = require('../helpers/teamHelper.js'); | ||
cb(metadata); | ||
cb(null, metadata); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -32,3 +33,3 @@ }; | ||
.then(function(data) { | ||
var stats = teamHelper.statsMap(data.fantasy_content.team[1]); | ||
var stats = teamHelper.mapStats(data.fantasy_content.team[1]); | ||
var team = teamHelper.mapTeam(data.fantasy_content.team[0]); | ||
@@ -38,5 +39,6 @@ | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -56,5 +58,6 @@ }; | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -77,5 +80,6 @@ }; | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -91,3 +95,3 @@ }; | ||
.then(function(data) { | ||
var draft_results = teamHelper.draftMap(data.fantasy_content.team[1].draft_results); | ||
var draft_results = teamHelper.mapDraft(data.fantasy_content.team[1].draft_results); | ||
var team = teamHelper.mapTeam(data.fantasy_content.team[0]); | ||
@@ -97,5 +101,6 @@ | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -117,6 +122,7 @@ }; | ||
cb(team); | ||
cb(null, team); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
@@ -24,5 +24,6 @@ var transactionHelper = require('../helpers/transactionHelper.js'); | ||
cb(meta); | ||
cb(null, meta); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -29,0 +30,0 @@ }; |
@@ -23,5 +23,6 @@ var _ = require('lodash'); | ||
cb(user); | ||
cb(null, user); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -45,5 +46,6 @@ }; | ||
cb(user); | ||
cb(null, user); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
@@ -67,6 +69,7 @@ }; | ||
cb(user); | ||
cb(null, user); | ||
}, function(e) { | ||
self.err(e, cb); | ||
// self.err(e, cb); | ||
cb(e, null); | ||
}); | ||
}; |
60428
1596
73