removes steam auth, sets up steam api requests in async
This commit is contained in:
6
app.js
6
app.js
@ -118,7 +118,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);
|
||||
|
||||
|
||||
/**
|
||||
@ -146,10 +146,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);
|
||||
|
@ -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');
|
||||
@ -202,43 +201,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.
|
||||
*/
|
||||
|
@ -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 });
|
||||
});
|
||||
};
|
@ -2,14 +2,13 @@ var mongoose = require('mongoose');
|
||||
var bcrypt = require('bcrypt-nodejs');
|
||||
|
||||
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,
|
||||
|
||||
|
@ -28,8 +28,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"
|
||||
}
|
||||
}
|
||||
|
@ -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
|
Reference in New Issue
Block a user