Compare commits

...

3 Commits

Author SHA1 Message Date
Alexander Corn
7f945afbca 3.19.7 2016-05-05 16:00:38 -04:00
Alexander Corn
3b241ba24f Cache profile URL so we don't need to request it all the time 2016-05-05 16:00:28 -04:00
Alexander Corn
fddd74cf24 Fixed crash if response to login is malformed 2016-04-04 21:42:46 -04:00
3 changed files with 34 additions and 15 deletions

View File

@@ -114,6 +114,10 @@ SteamCommunity.prototype.editProfile = function(settings, callback) {
}
self._myProfile("edit", values, function(err, response, body) {
if (values.customURL) {
delete self._profileURL;
}
if(err || response.statusCode != 200) {
if(callback) {
callback(err || new Error("HTTP error " + response.statusCode));

View File

@@ -135,6 +135,8 @@ SteamCommunity.prototype.login = function(details, callback) {
callback(error);
} else if(!body.success) {
callback(new Error(body.message || "Unknown error"));
} else if(!body.oauth) {
callback(new Error("Malformed response"));
} else {
var sessionID = generateSessionID();
var oAuth = JSON.parse( body.oauth );
@@ -339,20 +341,34 @@ SteamCommunity.prototype.loggedIn = function(callback) {
SteamCommunity.prototype._myProfile = function(endpoint, form, callback) {
var self = this;
this.httpRequest("https://steamcommunity.com/my", {"followRedirect": false}, function(err, response, body) {
if(err || response.statusCode != 302) {
callback(err || "HTTP error " + response.statusCode);
return;
}
var match = response.headers.location.match(/steamcommunity\.com(\/(id|profiles)\/[^\/]+)\/?/);
if(!match) {
callback(new Error("Can't get profile URL"));
return;
}
if (this._profileURL) {
completeRequest(this._profileURL);
} else {
this.httpRequest("https://steamcommunity.com/my", {"followRedirect": false}, function(err, response, body) {
if(err || response.statusCode != 302) {
callback(err || "HTTP error " + response.statusCode);
return;
}
var match = response.headers.location.match(/steamcommunity\.com(\/(id|profiles)\/[^\/]+)\/?/);
if(!match) {
callback(new Error("Can't get profile URL"));
return;
}
self._profileURL = match[1];
setTimeout(function () {
delete self._profileURL; // delete the cache
}, 60000);
completeRequest(match[1]);
}, "steamcommunity");
}
function completeRequest(url) {
var options = {
"uri": "https://steamcommunity.com" + match[1] + "/" + endpoint,
"uri": "https://steamcommunity.com" + url + "/" + endpoint,
"method": "GET"
};
@@ -362,10 +378,9 @@ SteamCommunity.prototype._myProfile = function(endpoint, form, callback) {
}
self.httpRequest(options, callback, "steamcommunity");
}, "steamcommunity");
}
};
require('./components/http.js');
require('./components/chat.js');
require('./components/profile.js');

View File

@@ -1,6 +1,6 @@
{
"name": "steamcommunity",
"version": "3.19.6",
"version": "3.19.7",
"description": "Provides an interface for logging into and interacting with the Steam Community website",
"keywords": ["steam", "steam community"],
"homepage": "https://github.com/DoctorMcKay/node-steamcommunity",