yahoo-fantasy-without-auth
Version:
NodeJS wrapper for the Yahoo! Fantasy Sports API. Needed to implement Yahoo OAuth 2.0 flows in your own app
94 lines (80 loc) • 2.8 kB
JavaScript
/* global module, require */
'use strict';
module.exports = YahooFantasy;
var request = require('request'),
querystring = require('querystring'),
util = require('util'),
GameResource = require('./resources/gameResource.js'),
LeagueResource = require('./resources/leagueResource.js'),
PlayerResource = require('./resources/playerResource.js'),
RosterResource = require('./resources/rosterResource.js'),
TeamResource = require('./resources/teamResource.js'),
TransactionResource = require('./resources/transactionResource.js'),
UserResource = require('./resources/userResource.js'),
PlayersCollection = require('./collections/playersCollection.js'),
GamesCollection = require('./collections/gamesCollection.js'),
TeamsCollection = require('./collections/teamsCollection.js'),
LeaguesCollection = require('./collections/leaguesCollection.js'),
TransactionsCollection = require('./collections/transactionsCollection.js');
// usersCollection = require('./collections/usersCollection.js');
function YahooFantasy() {
this.GET = 'get';
this.POST = 'post';
this.game = new GameResource(this);
this.games = new GamesCollection(this);
this.league = new LeagueResource(this);
this.leagues = new LeaguesCollection(this);
this.player = new PlayerResource(this);
this.players = new PlayersCollection(this);
this.team = new TeamResource(this);
this.teams = new TeamsCollection(this);
this.transaction = new TransactionResource(this);
this.transactions = new TransactionsCollection(this);
this.roster = new RosterResource(this);
this.user = new UserResource(this);
// this.users = new UsersCollection(); // TODO
this.yuser = {
token: null
};
}
YahooFantasy.prototype.setUserToken = function(userToken) {
this.yuser.token = userToken;
};
YahooFantasy.prototype.api = function(method, url, postData, cb) {
if ( arguments.length == 3 ) {
cb = postData;
postData = null;
}
var callback = this.apiCallback.bind(this, method, url, postData, cb);
if ( this.POST == method ) {
var options = {
url: url,
headers: { 'Authorization': 'Bearer ' + this.yuser.token,
'content-type': 'application/xml' },
body: postData
};
request.post(options, callback);
} else {
var options = {
url: url,
headers: { 'Authorization': 'Bearer ' + this.yuser.token },
rejectUnauthorized: false
};
request.get(options, callback);
}
};
YahooFantasy.prototype.apiCallback = function(method, url, postData, cb, e, resp, data) {
try {
data = JSON.parse(data);
if (e) {
return cb(e);
} else {
if ( data.error ) {
return cb(data.error);
}
return cb(null, data);
}
} catch (error) {
return cb(error);
}
};