diff --git a/app.js b/app.js index 357cf1869c..763cddeb0b 100755 --- a/app.js +++ b/app.js @@ -121,7 +121,7 @@ app.get('/api/aviary', apiController.getAviary); app.get('/api/paypal', apiController.getPayPal); app.get('/api/paypal/success', apiController.getPayPalSuccess); app.get('/api/paypal/cancel', apiController.getPayPalCancel); -app.get('/api/steam', passportConf.isAuthorized, passportConf.isAuthorized, apiController.getSteam); +app.get('/api/steam', apiController.getSteam); /** @@ -149,10 +149,6 @@ app.get('/auth/tumblr', passport.authorize('tumblr')); app.get('/auth/tumblr/callback', passport.authorize('tumblr', { failureRedirect: '/api' }), function(req, res) { res.redirect('/api/tumblr'); }); -app.get('/auth/steam', passport.authenticate('steam')); -app.get('/auth/steam/callback', passport.authenticate('steam', { failureRedirect: '/login' }), function(req, res) { - res.redirect('/api/steam'); -}); app.listen(app.get('port'), function() { console.log("✔ Express server listening on port %d in %s mode", app.get('port'), app.settings.env); diff --git a/config/passport.js b/config/passport.js index f194a903a9..26056214b4 100755 --- a/config/passport.js +++ b/config/passport.js @@ -6,7 +6,6 @@ var FacebookStrategy = require('passport-facebook').Strategy; var TwitterStrategy = require('passport-twitter').Strategy; var GitHubStrategy = require('passport-github').Strategy; var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; -var SteamStrategy = require('passport-steam').Strategy; var User = require('../models/User'); var secrets = require('./secrets'); var _ = require('underscore'); @@ -206,43 +205,6 @@ passport.use(new GoogleStrategy(secrets.google, function(req, accessToken, refre } })); -/** - * Sign in with Steam. - */ - -passport.use(new SteamStrategy(secrets.steam, function(req, identifier, profile, done) { - identifier = identifier.match('http://steamcommunity.com/openid/id/([0-9]{17,25})'); - var steam_id = identifier[1]; - if (req.user) { - User.findOne({ steam: steam_id }, function(err, existingUser) { - if (existingUser) { - req.flash('errors', { msg: 'There is already a Steam account that belongs to you. Sign in with that account or delete it, then link it with your current account.' }); - done(err); - } else { - User.findById(req.user.id, function(err, user) { - user.steam = steam_id; - user.tokens.push({ kind: 'steam', accessToken: steam_id }); - user.save(function(err) { - req.flash('info', { msg: 'Steam account has been linked.' }); - done(err, user); - }); - }); - } - }); - - } else { - User.findOne({ steam: steam_id }, function(err, existingUser) { - if (existingUser) return done(null, existingUser); - var user = new User(); - user.steam = steam_id; - user.tokens.push({ kind: 'steam', steam_id: steam_id }); - user.save(function(err) { - done(err, user); - }); - }); - } -})); - /** * Sign in with Tumblr. */ diff --git a/controllers/api.js b/controllers/api.js index c33837b36e..b05ac857db 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -12,9 +12,6 @@ var foursquare = require('node-foursquare')({ secrets: secrets.foursquare }); var Github = require('github-api'); var Twit = require('twit'); var paypal = require('paypal-rest-sdk'); -var steam = require('steam-web'); - - /** * GET /api @@ -342,17 +339,51 @@ exports.getPayPalCancel = function(req, res, next) { */ exports.getSteam = function(req, res) { - var S = new steam({ - apiKey: secrets.steam.apiKey - }); + var defaultSteamId = '76561197992403307'; + var steamId = _.findWhere(req.user.tokens, { kind: 'steam' }).steamId || defaultSteamId; + var query = { l: 'english', steamid: steamId, key: secrets.steam.apiKey }; - S.getPlayerSummaries({ - steamids: [ req.user.steam ], - callback: function(err, data) { - res.render('api/steam', { - title: 'Steam Web API', - players: data.response.players, + async.parallel([ + function (callback) { + builtQuery = querystring.stringify(query); + request.get({url:'http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?' + builtQuery, json:true}, function(err, request, body) { + if (err) return next(err); + callback(null, body); }); - } + }, + function (callback) { + query.appid = '570'; // Dota 2 + builtQuery = querystring.stringify(query); + request.get({url:'http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?' + builtQuery, json:true}, function(err, request, body) { + if (err) return next(err); + delete query.appid; + callback(null, body); + }); + }, + function (callback) { + query.appid = '219640'; //Chivalry: Medieval Warfare + builtQuery = querystring.stringify(query); + request.get({url:'http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?' + builtQuery, json:true}, function(err, request, body) { + if (err) return next(err); + delete query.appid; + callback(null, body); + }); + }, + function (callback) { + delete query.steamid; + query.steamids = steamId; //this request can be supplied a set of comma seperated steam ids + builtQuery = querystring.stringify(query); + request.get({url:'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?' + builtQuery, json:true}, function(err, request, body) { + if (err) return next(err); + callback(null, body); + }); + }, + ], + function (err, results) { + console.log(require('util').inspect(results, false, null)); + if (err) return next(err); + else res.render('api/steam', { + title: 'Steam Web API', + items: results }); }); }; \ No newline at end of file diff --git a/models/User.js b/models/User.js index bdb5f1ea0c..013bb29064 100644 --- a/models/User.js +++ b/models/User.js @@ -3,14 +3,13 @@ var bcrypt = require('bcrypt-nodejs'); var crypto = require('crypto'); var userSchema = new mongoose.Schema({ - email: { type: String, unique: true, sparse: true }, + email: { type: String, unique: true }, password: String, facebook: { type: String, unique: true, sparse: true }, twitter: { type: String, unique: true, sparse: true }, google: { type: String, unique: true, sparse: true }, github: { type: String, unique: true, sparse: true }, - steam: { type: String, unique: true, sparse: true }, tokens: Array, diff --git a/package.json b/package.json index e48526983d..226cb46e15 100755 --- a/package.json +++ b/package.json @@ -29,8 +29,6 @@ "twit": "~1.1.12", "underscore": "~1.5.2", "paypal-rest-sdk": "~0.6.4", - "connect-mongo": "~0.4.0", - "passport-steam": "~0.1.3", - "steam-web": "~0.2.1" + "connect-mongo": "~0.4.0" } } diff --git a/views/api/steam.jade b/views/api/steam.jade index da0f9fc49b..1bfa5d3679 100644 --- a/views/api/steam.jade +++ b/views/api/steam.jade @@ -10,14 +10,3 @@ block content a.btn.btn-primary(href='https://developer.valvesoftware.com/wiki/Steam_Web_API', target='_blank') i.fa.fa-check-square-o | Overview - - h4 Steam Players - - ul.list-unstyled - for player in players - li - .panel.panel-default - .panel-body - .clearfix - img.pull-left(src='#{player.avatarfull}', style='margin-right: 10px') - =player.personaname \ No newline at end of file