mirror of
https://github.com/DoctorMcKay/node-steamcommunity.git
synced 2026-08-19 13:13:28 +08:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26effb27fe | ||
|
|
5880e922ab | ||
|
|
fe007811a5 | ||
|
|
7b882c8439 | ||
|
|
6c4cb9e62f | ||
|
|
2300081d43 | ||
|
|
0f20f918be | ||
|
|
b761b8108b | ||
|
|
46e16cc0b6 | ||
|
|
237d3786a2 | ||
|
|
1884ceb7d9 | ||
|
|
893c4df06b | ||
|
|
593ed6b9ef | ||
|
|
840e9548ed | ||
|
|
dee6b7964b | ||
|
|
2fc434d475 | ||
|
|
42ebbda00d | ||
|
|
eed791acbd | ||
|
|
54b83016af | ||
|
|
1032b1f832 | ||
|
|
fce2560abe | ||
|
|
0069bb36ef | ||
|
|
1028c4193f | ||
|
|
991b11e0f4 | ||
|
|
72c01468da | ||
|
|
eecd682033 |
15
README.md
15
README.md
@@ -9,12 +9,15 @@ This module provides an easy interface for the Steam Community website. This mod
|
||||
|
||||
It supports Steam Guard and CAPTCHAs.
|
||||
|
||||
# Installation
|
||||
|
||||
Install it from npm:
|
||||
|
||||
$ npm install steamcommunity
|
||||
**Have a question about the module or coding in general? *Do not create a GitHub issue.* GitHub issues are for feature
|
||||
requests and bug reports. Instead, post in the [dedicated forum](https://dev.doctormckay.com/forum/8-node-steamcommunity/).
|
||||
Such issues may be ignored!**
|
||||
|
||||
# Documentation
|
||||
|
||||
As of version 1.0.0, documentation is on the [GitHub wiki](https://github.com/DoctorMcKay/node-steamcommunity/wiki).
|
||||
Documentation is available on the [GitHub wiki](https://github.com/DoctorMcKay/node-steamcommunity/wiki).
|
||||
|
||||
# Support
|
||||
|
||||
Report bugs on the [issue tracker](https://github.com/DoctorMcKay/node-steamcommunity/issues) or ask questions
|
||||
on the [dedicated forum](https://dev.doctormckay.com/forum/8-node-steamcommunity/).
|
||||
|
||||
@@ -7,8 +7,9 @@ SteamCommunity.prototype.getMarketItem = function(appid, hashName, currency, cal
|
||||
currency = 1;
|
||||
}
|
||||
var self = this;
|
||||
this.request("https://steamcommunity.com/market/listings/" + appid + "/" + encodeURIComponent(hashName), function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
this.httpRequest("https://steamcommunity.com/market/listings/" + appid + "/" + encodeURIComponent(hashName), function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,7 +27,7 @@ SteamCommunity.prototype.getMarketItem = function(appid, hashName, currency, cal
|
||||
callback(null, item);
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
function CMarketItem(appid, hashName, community, body, $) {
|
||||
@@ -103,11 +104,12 @@ CMarketItem.prototype.updatePriceForCommodity = function(currency, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this._community.request({
|
||||
this._community.httpRequest({
|
||||
"uri": "https://steamcommunity.com/market/itemordershistogram?country=US&language=english¤cy=" + currency + "&item_nameid=" + this.commodityID,
|
||||
"json": true,
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._community._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -137,7 +139,7 @@ CMarketItem.prototype.updatePriceForCommodity = function(currency, callback) {
|
||||
if(callback) {
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
CMarketItem.prototype.updatePriceForNonCommodity = function (currency, callback) {
|
||||
@@ -146,14 +148,15 @@ CMarketItem.prototype.updatePriceForNonCommodity = function (currency, callback)
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this._community.request({
|
||||
this._community.httpRequest({
|
||||
"uri": "https://steamcommunity.com/market/listings/" +
|
||||
this._appid + "/" +
|
||||
encodeURIComponent(this._hashName) +
|
||||
"/render/?query=&start=0&count=10&country=US&language=english¤cy=" + currency,
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if (self._community._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -181,5 +184,5 @@ CMarketItem.prototype.updatePriceForNonCommodity = function (currency, callback)
|
||||
}
|
||||
|
||||
callback && callback(null);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
@@ -27,7 +27,7 @@ SteamCommunity.prototype.marketSearch = function(options, callback) {
|
||||
qs.count = 100;
|
||||
qs.sort_column = 'price';
|
||||
qs.sort_dir = 'asc';
|
||||
performSearch.call(this, this.request, qs, [], callback);
|
||||
performSearch.call(this, this.httpRequest, qs, [], callback);
|
||||
};
|
||||
|
||||
function performSearch(request, qs, results, callback) {
|
||||
@@ -40,7 +40,8 @@ function performSearch(request, qs, results, callback) {
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -71,7 +72,7 @@ function performSearch(request, qs, results, callback) {
|
||||
qs.start += body.pagesize;
|
||||
performSearch.call(self, request, qs, results, callback);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
|
||||
function CMarketSearchResult(row) {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
var SteamCommunity = require('../index.js');
|
||||
var Helpers = require('../components/helpers.js');
|
||||
var SteamID = require('steamid');
|
||||
var xml2js = require('xml2js');
|
||||
|
||||
SteamCommunity.prototype.getSteamGroup = function(id, callback) {
|
||||
if(typeof id !== 'string' && !(typeof id === 'object' && id.__proto__ === SteamID.prototype)) {
|
||||
if(typeof id !== 'string' && !Helpers.isSteamID(id)) {
|
||||
throw new Error("id parameter should be a group URL string or a SteamID object");
|
||||
}
|
||||
|
||||
@@ -12,12 +13,9 @@ SteamCommunity.prototype.getSteamGroup = function(id, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request("https://steamcommunity.com/" + (typeof id === 'string' ? "groups/" + id : "gid/" + id.toString()) + "/memberslistxml/?xml=1", function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
this.httpRequest("https://steamcommunity.com/" + (typeof id === 'string' ? "groups/" + id : "gid/" + id.toString()) + "/memberslistxml/?xml=1", function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -29,7 +27,7 @@ SteamCommunity.prototype.getSteamGroup = function(id, callback) {
|
||||
|
||||
callback(null, new CSteamGroup(self, result.memberList));
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
function CSteamGroup(community, groupData) {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
var SteamCommunity = require('../index.js');
|
||||
var Helpers = require('../components/helpers.js');
|
||||
var SteamID = require('steamid');
|
||||
var xml2js = require('xml2js');
|
||||
|
||||
SteamCommunity.prototype.getSteamUser = function(id, callback) {
|
||||
if(typeof id !== 'string' && !(typeof id === 'object' && id.__proto__ === SteamID.prototype)) {
|
||||
if(typeof id !== 'string' && !Helpers.isSteamID(id)) {
|
||||
throw new Error("id parameter should be a user URL string or a SteamID object");
|
||||
}
|
||||
|
||||
@@ -12,12 +13,9 @@ SteamCommunity.prototype.getSteamUser = function(id, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request("http://steamcommunity.com/" + (typeof id === 'string' ? "id/" + id : "profiles/" + id.toString()) + "/?xml=1", function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
this.httpRequest("http://steamcommunity.com/" + (typeof id === 'string' ? "id/" + id : "profiles/" + id.toString()) + "/?xml=1", function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -48,7 +46,7 @@ SteamCommunity.prototype.getSteamUser = function(id, callback) {
|
||||
|
||||
callback(null, new CSteamUser(self, result.profile, customurl));
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
function CSteamUser(community, userData, customurl) {
|
||||
|
||||
@@ -48,7 +48,7 @@ SteamCommunity.prototype.chatLogon = function(interval, uiMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ISteamWebUserPresenceOAuth/Logon/v1",
|
||||
"form": {
|
||||
"ui_mode": uiMode,
|
||||
@@ -82,7 +82,7 @@ SteamCommunity.prototype.chatLogon = function(interval, uiMode) {
|
||||
self.chatState = SteamCommunity.ChatState.LoggedOn;
|
||||
self.emit('chatLoggedOn');
|
||||
self._chatPoll();
|
||||
});
|
||||
}, "steamcommunity");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -103,7 +103,7 @@ SteamCommunity.prototype.chatMessage = function(recipient, text, type, callback)
|
||||
type = type || 'saytext';
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ISteamWebUserPresenceOAuth/Message/v1",
|
||||
"form": {
|
||||
"access_token": this._chat.accessToken,
|
||||
@@ -118,7 +118,8 @@ SteamCommunity.prototype.chatMessage = function(recipient, text, type, callback)
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -127,12 +128,12 @@ SteamCommunity.prototype.chatMessage = function(recipient, text, type, callback)
|
||||
} else {
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.chatLogoff = function() {
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ISteamWebUserPresenceOAuth/Logoff/v1",
|
||||
"form": {
|
||||
"access_token": this._chat.accessToken,
|
||||
@@ -149,14 +150,14 @@ SteamCommunity.prototype.chatLogoff = function() {
|
||||
delete self.chatFriends;
|
||||
self.chatState = SteamCommunity.ChatState.Offline;
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._chatPoll = function() {
|
||||
this.emit('debug', 'Doing chat poll');
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ISteamWebUserPresenceOAuth/Poll/v1",
|
||||
"form": {
|
||||
"umqid": self._chat.umqid,
|
||||
@@ -211,13 +212,13 @@ SteamCommunity.prototype._chatPoll = function() {
|
||||
self.emit('debug', 'Unhandled chat message type: ' + message.type);
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._chatUpdatePersona = function(steamID) {
|
||||
this.emit('debug', 'Updating persona data for ' + steamID);
|
||||
var self = this;
|
||||
this.request({
|
||||
this.httpRequest({
|
||||
"uri": "https://steamcommunity.com/chat/friendstate/" + steamID.accountid,
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
@@ -242,5 +243,5 @@ SteamCommunity.prototype._chatUpdatePersona = function(steamID) {
|
||||
|
||||
self.emit('chatPersonaState', steamID, persona);
|
||||
self.chatFriends[steamID.getSteamID64()] = persona;
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
@@ -16,7 +16,12 @@ SteamCommunity.prototype.getConfirmations = function(time, key, callback) {
|
||||
|
||||
request(this, "conf", key, time, "conf", null, false, function(err, body) {
|
||||
if(err) {
|
||||
if (err.message == "Invalid protocol: steammobile:") {
|
||||
err.message = "Not Logged In";
|
||||
}
|
||||
|
||||
callback(err);
|
||||
self._notifySessionExpired(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -148,17 +153,18 @@ function request(community, url, key, time, tag, params, json, callback) {
|
||||
params.m = "android";
|
||||
params.tag = tag;
|
||||
|
||||
community.request.get({
|
||||
community.httpRequestGet({
|
||||
"uri": "https://steamcommunity.com/mobileconf/" + url,
|
||||
"qs": params,
|
||||
"json": !!json
|
||||
}, function(err, response, body) {
|
||||
if(community._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null, body);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
|
||||
// Confirmation checker
|
||||
|
||||
@@ -38,8 +38,9 @@ SteamCommunity.prototype.getGroupMembers = function(gid, callback, members, link
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request(options, function(err, response, body) {
|
||||
if (self._checkHttpError(err, response, callback)) {
|
||||
this.httpRequest(options, function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -60,7 +61,7 @@ SteamCommunity.prototype.getGroupMembers = function(gid, callback, members, link
|
||||
callback(null, members);
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getGroupMembersEx = function(gid, addresses, callback) {
|
||||
@@ -73,7 +74,7 @@ SteamCommunity.prototype.joinGroup = function(gid, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64(),
|
||||
"form": {
|
||||
"action": "join",
|
||||
@@ -84,17 +85,8 @@ SteamCommunity.prototype.joinGroup = function(gid, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(err || response.statusCode >= 400) {
|
||||
callback(err || new Error("HTTP error " + response.statusCode));
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.leaveGroup = function(gid, callback) {
|
||||
@@ -112,16 +104,7 @@ SteamCommunity.prototype.leaveGroup = function(gid, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(err || response.statusCode >= 400) {
|
||||
callback(err || new Error("HTTP error " + response.statusCode));
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
callback(err || null);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -136,15 +119,11 @@ SteamCommunity.prototype.getAllGroupAnnouncements = function(gid, time, callback
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request({
|
||||
this.httpRequest({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/rss/"
|
||||
}, function(err, response, body) {
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -172,7 +151,7 @@ SteamCommunity.prototype.getAllGroupAnnouncements = function(gid, time, callback
|
||||
|
||||
return callback(null, announcements);
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
|
||||
SteamCommunity.prototype.postGroupAnnouncement = function(gid, headline, content, callback) {
|
||||
@@ -181,7 +160,7 @@ SteamCommunity.prototype.postGroupAnnouncement = function(gid, headline, content
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/announcements",
|
||||
"form": {
|
||||
"sessionID": this.getSessionID(),
|
||||
@@ -196,16 +175,8 @@ SteamCommunity.prototype.postGroupAnnouncement = function(gid, headline, content
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
})
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.editGroupAnnouncement = function(gid, aid, headline, content, callback) {
|
||||
@@ -227,23 +198,15 @@ SteamCommunity.prototype.editGroupAnnouncement = function(gid, aid, headline, co
|
||||
"languages[0][body]": content,
|
||||
"languages[0][updated]": 1
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.request.post(submitData, function(err, response, body) {
|
||||
this.httpRequestPost(submitData, function(err, response, body) {
|
||||
if(!callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
})
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.deleteGroupAnnouncement = function(gid, aid, callback) {
|
||||
@@ -254,24 +217,16 @@ SteamCommunity.prototype.deleteGroupAnnouncement = function(gid, aid, callback)
|
||||
var self = this;
|
||||
|
||||
var submitData = {
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/announcements/delete/" + aid + "?sessionID=" + this.getSessionID(),
|
||||
}
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/announcements/delete/" + aid + "?sessionID=" + this.getSessionID()
|
||||
};
|
||||
|
||||
this.request.get(submitData, function(err, response, body) {
|
||||
this.httpRequestGet(submitData, function(err, response, body) {
|
||||
if(!callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
})
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.scheduleGroupEvent = function(gid, name, type, description, time, server, callback) {
|
||||
@@ -319,7 +274,7 @@ SteamCommunity.prototype.scheduleGroupEvent = function(gid, name, type, descript
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.toString() + "/eventEdit",
|
||||
"form": form
|
||||
}, function(err, response, body) {
|
||||
@@ -327,17 +282,8 @@ SteamCommunity.prototype.scheduleGroupEvent = function(gid, name, type, descript
|
||||
return;
|
||||
}
|
||||
|
||||
if(err || response.statusCode >= 400) {
|
||||
callback(err || new Error("HTTP error " + response.statusCode));
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.setGroupPlayerOfTheWeek = function(gid, steamID, callback) {
|
||||
@@ -350,7 +296,7 @@ SteamCommunity.prototype.setGroupPlayerOfTheWeek = function(gid, steamID, callba
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/potwEdit",
|
||||
"form": {
|
||||
"xml": 1,
|
||||
@@ -380,7 +326,7 @@ SteamCommunity.prototype.setGroupPlayerOfTheWeek = function(gid, steamID, callba
|
||||
callback(new Error(results.response.results[0]));
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.kickGroupMember = function(gid, steamID, callback) {
|
||||
@@ -393,7 +339,7 @@ SteamCommunity.prototype.kickGroupMember = function(gid, steamID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/gid/" + gid.getSteamID64() + "/membersManage",
|
||||
"form": {
|
||||
"sessionID": this.getSessionID(),
|
||||
@@ -406,17 +352,8 @@ SteamCommunity.prototype.kickGroupMember = function(gid, steamID, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(err || response.statusCode >= 400) {
|
||||
callback(err || new Error("HTTP error " + response.statusCode));
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getGroupHistory = function(gid, page, callback) {
|
||||
@@ -430,12 +367,9 @@ SteamCommunity.prototype.getGroupHistory = function(gid, page, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request("https://steamcommunity.com/gid/" + gid.getSteamID64() + "/history?p=" + page, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
this.httpRequest("https://steamcommunity.com/gid/" + gid.getSteamID64() + "/history?p=" + page, function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -499,5 +433,5 @@ SteamCommunity.prototype.getGroupHistory = function(gid, page, callback) {
|
||||
});
|
||||
|
||||
callback(null, output);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
13
components/helpers.js
Normal file
13
components/helpers.js
Normal file
@@ -0,0 +1,13 @@
|
||||
exports.isSteamID = function(input) {
|
||||
var keys = Object.keys(input);
|
||||
if (keys.length != 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make sure it has the keys we expect
|
||||
keys = keys.filter(function(item) {
|
||||
return ['universe', 'type', 'instance', 'accountid'].indexOf(item) != -1;
|
||||
});
|
||||
|
||||
return keys.length == 4;
|
||||
};
|
||||
138
components/http.js
Normal file
138
components/http.js
Normal file
@@ -0,0 +1,138 @@
|
||||
var SteamCommunity = require('../index.js');
|
||||
|
||||
SteamCommunity.prototype.httpRequest = function(uri, options, callback, source) {
|
||||
if (typeof uri === 'object') {
|
||||
source = callback;
|
||||
callback = options;
|
||||
options = uri;
|
||||
uri = options.url || options.uri;
|
||||
} else if (typeof options === 'function') {
|
||||
source = callback;
|
||||
callback = options;
|
||||
options = {};
|
||||
}
|
||||
|
||||
options.url = options.uri = uri;
|
||||
|
||||
if (this._httpRequestConvenienceMethod) {
|
||||
options.method = this._httpRequestConvenienceMethod;
|
||||
delete this._httpRequestConvenienceMethod;
|
||||
}
|
||||
|
||||
var requestID = ++this._httpRequestID;
|
||||
source = source || "";
|
||||
|
||||
var self = this;
|
||||
var continued = false;
|
||||
|
||||
if (!this.onPreHttpRequest || !this.onPreHttpRequest(requestID, source, options, continueRequest)) {
|
||||
// No pre-hook, or the pre-hook doesn't want to delay the request.
|
||||
continueRequest(null);
|
||||
}
|
||||
|
||||
function continueRequest(err) {
|
||||
if (continued) {
|
||||
return;
|
||||
}
|
||||
|
||||
continued = true;
|
||||
|
||||
if (err) {
|
||||
if (callback) {
|
||||
callback(err);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self.request(options, function (err, response, body) {
|
||||
var hasCallback = !!callback;
|
||||
var httpError = options.checkHttpError !== false && self._checkHttpError(err, response, callback);
|
||||
var communityError = !options.json && options.checkCommunityError !== false && self._checkCommunityError(body, httpError ? function () {} : callback); // don't fire the callback if hasHttpError did it already
|
||||
var tradeError = !options.json && options.checkTradeError !== false && self._checkTradeError(body, httpError || communityError ? function () {} : callback); // don't fire the callback if either of the previous already did
|
||||
|
||||
self.emit('postHttpRequest', requestID, source, options, httpError || communityError || tradeError || null, response, body, {
|
||||
"hasCallback": hasCallback,
|
||||
"httpError": httpError,
|
||||
"communityError": communityError,
|
||||
"tradeError": tradeError
|
||||
});
|
||||
|
||||
if(hasCallback && !(httpError || communityError || tradeError)) {
|
||||
callback.apply(self, arguments);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.httpRequestGet = function() {
|
||||
this._httpRequestConvenienceMethod = "GET";
|
||||
return this.httpRequest.apply(this, arguments);
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.httpRequestPost = function() {
|
||||
this._httpRequestConvenienceMethod = "POST";
|
||||
return this.httpRequest.apply(this, arguments);
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._notifySessionExpired = function(err) {
|
||||
this.emit('sessionExpired', err);
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkHttpError = function(err, response, callback) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
if(response.statusCode >= 300 && response.statusCode <= 399 && response.headers.location.indexOf('/login') != -1) {
|
||||
err = new Error("Not Logged In");
|
||||
callback(err);
|
||||
this._notifySessionExpired(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
if(response.statusCode >= 400) {
|
||||
err = new Error("HTTP error " + response.statusCode);
|
||||
err.code = response.statusCode;
|
||||
callback(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkCommunityError = function(html, callback) {
|
||||
var err;
|
||||
|
||||
if(typeof html === 'string' && html.match(/<h1>Sorry!<\/h1>/)) {
|
||||
var match = html.match(/<h3>(.+)<\/h3>/);
|
||||
err = new Error(match ? match[1] : "Unknown error occurred");
|
||||
callback(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
if (typeof html === 'string' && html.match(/g_steamID = false;/) && html.match(/<h1>Sign In<\/h1>/)) {
|
||||
err = new Error("Not Logged In");
|
||||
callback(err);
|
||||
this._notifySessionExpired(err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkTradeError = function(html, callback) {
|
||||
if (typeof html !== 'string') {
|
||||
return false;
|
||||
}
|
||||
|
||||
var match = html.match(/<div id="error_msg">\s*([^<]+)\s*<\/div>/);
|
||||
if (match) {
|
||||
var err = new Error(match[1].trim());
|
||||
callback(new Error(err));
|
||||
return err;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
@@ -13,7 +13,7 @@ SteamCommunity.prototype.getInventoryHistory = function(options, callback) {
|
||||
|
||||
options.page = options.page || 1;
|
||||
|
||||
this.request("https://steamcommunity.com/my/inventoryhistory?l=english&p=" + options.page, function(err, response, body) {
|
||||
this.httpRequest("https://steamcommunity.com/my/inventoryhistory?l=english&p=" + options.page, function(err, response, body) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
return;
|
||||
@@ -122,7 +122,7 @@ SteamCommunity.prototype.getInventoryHistory = function(options, callback) {
|
||||
} else {
|
||||
callback(null, output);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
function resolveVanityURL(vanityURL, callback) {
|
||||
|
||||
@@ -3,10 +3,12 @@ var Cheerio = require('cheerio');
|
||||
|
||||
SteamCommunity.prototype.getMarketApps = function(callback) {
|
||||
var self = this;
|
||||
this.request('https://steamcommunity.com/market/', function (err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
this.httpRequest('https://steamcommunity.com/market/', function (err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
var $ = Cheerio.load(body);
|
||||
if ($('.market_search_game_button_group')) {
|
||||
apps = {};
|
||||
@@ -21,5 +23,5 @@ SteamCommunity.prototype.getMarketApps = function(callback) {
|
||||
} else {
|
||||
callback(new Error("Malformed response"));
|
||||
}
|
||||
});
|
||||
}
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
@@ -220,7 +220,7 @@ SteamCommunity.prototype.uploadAvatar = function(image, format, callback) {
|
||||
if(image instanceof Buffer) {
|
||||
doUpload(image);
|
||||
} else if(image.match(/^https?:\/\//)) {
|
||||
this.request.get({
|
||||
this.httpRequestGet({
|
||||
"uri": image,
|
||||
"encoding": null
|
||||
}, function(err, response, body) {
|
||||
@@ -237,7 +237,7 @@ SteamCommunity.prototype.uploadAvatar = function(image, format, callback) {
|
||||
}
|
||||
|
||||
doUpload(body);
|
||||
})
|
||||
}, "steamcommunity");
|
||||
} else {
|
||||
if(!format) {
|
||||
format = image.match(/\.([^\.]+)$/);
|
||||
@@ -300,7 +300,7 @@ SteamCommunity.prototype.uploadAvatar = function(image, format, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/FileUploader",
|
||||
"formData": {
|
||||
"MAX_FILE_SIZE": buffer.length,
|
||||
@@ -354,6 +354,6 @@ SteamCommunity.prototype.uploadAvatar = function(image, format, callback) {
|
||||
if(callback) {
|
||||
callback(null, body.images.full);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@ SteamCommunity.prototype.enableTwoFactor = function(callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ITwoFactorService/AddAuthenticator/v1/",
|
||||
"form": {
|
||||
"steamid": self.steamID.getSteamID64(),
|
||||
@@ -28,7 +28,8 @@ SteamCommunity.prototype.enableTwoFactor = function(callback) {
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -45,7 +46,7 @@ SteamCommunity.prototype.enableTwoFactor = function(callback) {
|
||||
}
|
||||
|
||||
callback(null, body.response);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -66,7 +67,7 @@ SteamCommunity.prototype.finalizeTwoFactor = function(secret, activationCode, ca
|
||||
function finalize(token) {
|
||||
var code = SteamTotp.generateAuthCode(secret, diff);
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ITwoFactorService/FinalizeAddAuthenticator/v1/",
|
||||
"form": {
|
||||
"steamid": self.steamID.getSteamID64(),
|
||||
@@ -77,7 +78,8 @@ SteamCommunity.prototype.finalizeTwoFactor = function(secret, activationCode, ca
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -104,7 +106,7 @@ SteamCommunity.prototype.finalizeTwoFactor = function(secret, activationCode, ca
|
||||
} else {
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -117,7 +119,7 @@ SteamCommunity.prototype.disableTwoFactor = function(revocationCode, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/ITwoFactorService/RemoveAuthenticator/v1/",
|
||||
"form": {
|
||||
"steamid": self.steamID.getSteamID64(),
|
||||
@@ -127,7 +129,8 @@ SteamCommunity.prototype.disableTwoFactor = function(revocationCode, callback) {
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -149,6 +152,6 @@ SteamCommunity.prototype.disableTwoFactor = function(revocationCode, callback) {
|
||||
var error = new Error("Cannot remove authenticator (" + body.response.status + ")");
|
||||
error.eresult = body.response.status;
|
||||
callback(error);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -8,7 +8,7 @@ SteamCommunity.prototype.addFriend = function(userID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/AddFriendAjax",
|
||||
"form": {
|
||||
"accept_invite": 0,
|
||||
@@ -21,7 +21,8 @@ SteamCommunity.prototype.addFriend = function(userID, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -30,7 +31,7 @@ SteamCommunity.prototype.addFriend = function(userID, callback) {
|
||||
} else {
|
||||
callback(new Error("Unknown error"));
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.acceptFriendRequest = function(userID, callback) {
|
||||
@@ -39,7 +40,7 @@ SteamCommunity.prototype.acceptFriendRequest = function(userID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/AddFriendAjax",
|
||||
"form": {
|
||||
"accept_invite": 1,
|
||||
@@ -51,12 +52,8 @@ SteamCommunity.prototype.acceptFriendRequest = function(userID, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.removeFriend = function(userID, callback) {
|
||||
@@ -65,7 +62,7 @@ SteamCommunity.prototype.removeFriend = function(userID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/RemoveFriendAjax",
|
||||
"form": {
|
||||
"sessionID": this.getSessionID(),
|
||||
@@ -76,12 +73,8 @@ SteamCommunity.prototype.removeFriend = function(userID, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.blockCommunication = function(userID, callback) {
|
||||
@@ -90,7 +83,7 @@ SteamCommunity.prototype.blockCommunication = function(userID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/BlockUserAjax",
|
||||
"form": {
|
||||
"sessionID": this.getSessionID(),
|
||||
@@ -101,12 +94,8 @@ SteamCommunity.prototype.blockCommunication = function(userID, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.unblockCommunication = function(userID, callback) {
|
||||
@@ -137,7 +126,7 @@ SteamCommunity.prototype.postUserComment = function(userID, message, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/comment/Profile/post/" + userID.toString() + "/-1",
|
||||
"form": {
|
||||
"comment": message,
|
||||
@@ -150,7 +139,8 @@ SteamCommunity.prototype.postUserComment = function(userID, message, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -161,7 +151,7 @@ SteamCommunity.prototype.postUserComment = function(userID, message, callback) {
|
||||
} else {
|
||||
callback(new Error("Unknown error"));
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.inviteUserToGroup = function(userID, groupID, callback) {
|
||||
@@ -170,7 +160,7 @@ SteamCommunity.prototype.inviteUserToGroup = function(userID, groupID, callback)
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/actions/GroupInvite",
|
||||
"form": {
|
||||
"group": groupID.toString(),
|
||||
@@ -185,7 +175,8 @@ SteamCommunity.prototype.inviteUserToGroup = function(userID, groupID, callback)
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -196,7 +187,7 @@ SteamCommunity.prototype.inviteUserToGroup = function(userID, groupID, callback)
|
||||
} else {
|
||||
callback(new Error("Unknown error"));
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getUserInventoryContexts = function(userID, callback) {
|
||||
@@ -215,8 +206,9 @@ SteamCommunity.prototype.getUserInventoryContexts = function(userID, callback) {
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.request("https://steamcommunity.com/profiles/" + userID.getSteamID64() + "/inventory/", function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
this.httpRequest("https://steamcommunity.com/profiles/" + userID.getSteamID64() + "/inventory/", function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -235,7 +227,7 @@ SteamCommunity.prototype.getUserInventoryContexts = function(userID, callback) {
|
||||
}
|
||||
|
||||
callback(null, data);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getUserInventory = function(userID, appID, contextID, tradableOnly, callback) {
|
||||
@@ -249,7 +241,7 @@ SteamCommunity.prototype.getUserInventory = function(userID, appID, contextID, t
|
||||
get([], []);
|
||||
|
||||
function get(inventory, currency, start) {
|
||||
self.request({
|
||||
self.httpRequest({
|
||||
"uri": "https://steamcommunity.com" + endpoint + "/inventory/json/" + appID + "/" + contextID,
|
||||
"qs": {
|
||||
"start": start,
|
||||
@@ -257,7 +249,8 @@ SteamCommunity.prototype.getUserInventory = function(userID, appID, contextID, t
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -298,6 +291,6 @@ SteamCommunity.prototype.getUserInventory = function(userID, appID, contextID, t
|
||||
} else {
|
||||
callback(null, inventory, currency);
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,11 +2,12 @@ var SteamCommunity = require('../index.js');
|
||||
|
||||
SteamCommunity.prototype.getWebApiKey = function(domain, callback) {
|
||||
var self = this;
|
||||
this.request({
|
||||
this.httpRequest({
|
||||
"uri": "https://steamcommunity.com/dev/apikey",
|
||||
"followRedirect": false
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -20,7 +21,7 @@ SteamCommunity.prototype.getWebApiKey = function(domain, callback) {
|
||||
callback(null, match[1]);
|
||||
} else {
|
||||
// We need to register a new API key
|
||||
self.request.post('https://steamcommunity.com/dev/registerkey', {
|
||||
self.httpRequestPost('https://steamcommunity.com/dev/registerkey', {
|
||||
"form": {
|
||||
"domain": domain,
|
||||
"agreeToTerms": "agreed",
|
||||
@@ -28,14 +29,15 @@ SteamCommunity.prototype.getWebApiKey = function(domain, callback) {
|
||||
"Submit": "Register"
|
||||
}
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
self.getWebApiKey(domain, callback);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getWebApiOauthToken = function(callback) {
|
||||
@@ -46,12 +48,9 @@ SteamCommunity.prototype.getWebApiOauthToken = function(callback) {
|
||||
}
|
||||
|
||||
// Pull an oauth token from the webchat UI
|
||||
this.request("https://steamcommunity.com/chat", function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkCommunityError(body, callback)) {
|
||||
this.httpRequest("https://steamcommunity.com/chat", function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -62,5 +61,5 @@ SteamCommunity.prototype.getWebApiOauthToken = function(callback) {
|
||||
}
|
||||
|
||||
callback(null, match[1]);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
113
index.js
113
index.js
@@ -16,6 +16,7 @@ function SteamCommunity(options) {
|
||||
|
||||
this._jar = Request.jar();
|
||||
this._captchaGid = -1;
|
||||
this._httpRequestID = 0;
|
||||
this.chatState = SteamCommunity.ChatState.Offline;
|
||||
|
||||
var defaults = {
|
||||
@@ -67,14 +68,15 @@ SteamCommunity.prototype.login = function(details, callback) {
|
||||
this._jar.setCookie(Request.cookie("mobileClientVersion=0 (2.1.3)"), "https://steamcommunity.com");
|
||||
this._jar.setCookie(Request.cookie("mobileClient=android"), "https://steamcommunity.com");
|
||||
|
||||
this.request.post("https://steamcommunity.com/login/getrsakey/", {
|
||||
this.httpRequestPost("https://steamcommunity.com/login/getrsakey/", {
|
||||
"form": {"username": details.accountName},
|
||||
"headers": mobileHeaders,
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
// Remove the mobile cookies
|
||||
if (self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
deleteMobileCookies();
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,7 +89,7 @@ SteamCommunity.prototype.login = function(details, callback) {
|
||||
var key = new RSA();
|
||||
key.setPublic(body.publickey_mod, body.publickey_exp);
|
||||
|
||||
self.request.post({
|
||||
self.httpRequestPost({
|
||||
"uri": "https://steamcommunity.com/login/dologin/",
|
||||
"json": true,
|
||||
"form": {
|
||||
@@ -109,7 +111,8 @@ SteamCommunity.prototype.login = function(details, callback) {
|
||||
}, function(err, response, body) {
|
||||
deleteMobileCookies();
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -156,8 +159,8 @@ SteamCommunity.prototype.login = function(details, callback) {
|
||||
|
||||
callback(null, sessionID, cookies, steamguard, oAuth.oauth_token);
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "steamcommunity");
|
||||
}, "steamcommunity");
|
||||
|
||||
function deleteMobileCookies() {
|
||||
var cookie = Request.cookie('mobileClientVersion=');
|
||||
@@ -175,14 +178,15 @@ SteamCommunity.prototype.oAuthLogin = function(steamguard, token, callback) {
|
||||
var steamID = new SteamID(steamguard[0]);
|
||||
|
||||
var self = this;
|
||||
this.request.post({
|
||||
this.httpRequestPost({
|
||||
"uri": "https://api.steampowered.com/IMobileAuthService/GetWGToken/v1/",
|
||||
"form": {
|
||||
"access_token": token
|
||||
},
|
||||
"json": true
|
||||
}, function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -200,7 +204,7 @@ SteamCommunity.prototype.oAuthLogin = function(steamguard, token, callback) {
|
||||
|
||||
self.setCookies(cookies);
|
||||
callback(null, self.getSessionID(), cookies);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.setCookies = function(cookies) {
|
||||
@@ -234,7 +238,9 @@ function generateSessionID() {
|
||||
}
|
||||
|
||||
SteamCommunity.prototype.parentalUnlock = function(pin, callback) {
|
||||
this.request.post("https://steamcommunity.com/parental/ajaxunlock", {
|
||||
var self = this;
|
||||
|
||||
this.httpRequestPost("https://steamcommunity.com/parental/ajaxunlock", {
|
||||
"json": true,
|
||||
"form": {
|
||||
"pin": pin
|
||||
@@ -244,26 +250,30 @@ SteamCommunity.prototype.parentalUnlock = function(pin, callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!body || typeof body.success !== 'boolean') {
|
||||
return callback("Invalid response");
|
||||
callback("Invalid response");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!body.success) {
|
||||
return callback("Incorrect PIN");
|
||||
callback("Incorrect PIN");
|
||||
return;
|
||||
}
|
||||
|
||||
callback();
|
||||
}.bind(this));
|
||||
}.bind(this), "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.getNotifications = function(callback) {
|
||||
var self = this;
|
||||
this.request.get("https://steamcommunity.com/actions/RefreshNotificationArea", function(err, response, body) {
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
this.httpRequestGet("https://steamcommunity.com/actions/RefreshNotificationArea", function(err, response, body) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -293,26 +303,26 @@ SteamCommunity.prototype.getNotifications = function(callback) {
|
||||
}
|
||||
|
||||
callback(null, notifications);
|
||||
});
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.resetItemNotifications = function(callback) {
|
||||
var self = this;
|
||||
this.request.get("https://steamcommunity.com/my/inventory", function(err, response, body) {
|
||||
this.httpRequestGet("https://steamcommunity.com/my/inventory", function(err, response, body) {
|
||||
if(!callback) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(self._checkHttpError(err, response, callback)) {
|
||||
return;
|
||||
}
|
||||
|
||||
callback(null);
|
||||
});
|
||||
|
||||
callback(err || null);
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype.loggedIn = function(callback) {
|
||||
this.request("https://steamcommunity.com/my", {"followRedirect": false}, function(err, response, body) {
|
||||
this.httpRequestGet({
|
||||
"uri": "https://steamcommunity.com/my",
|
||||
"followRedirect": false,
|
||||
"checkHttpError": false
|
||||
}, function(err, response, body) {
|
||||
if(err || (response.statusCode != 302 && response.statusCode != 403)) {
|
||||
callback(err || new Error("HTTP error " + response.statusCode));
|
||||
return;
|
||||
@@ -324,22 +334,12 @@ SteamCommunity.prototype.loggedIn = function(callback) {
|
||||
}
|
||||
|
||||
callback(null, !!response.headers.location.match(/steamcommunity\.com(\/(id|profiles)\/[^\/]+)\/?/), false);
|
||||
});
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkCommunityError = function(html, callback) {
|
||||
if(html.match(/<h1>Sorry!<\/h1>/)) {
|
||||
var match = html.match(/<h3>(.+)<\/h3>/);
|
||||
callback(new Error(match ? match[1] : "Unknown error occurred"));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._myProfile = function(endpoint, form, callback) {
|
||||
var self = this;
|
||||
this.request("https://steamcommunity.com/my", {"followRedirect": false}, function(err, response, body) {
|
||||
this.httpRequest("https://steamcommunity.com/my", {"followRedirect": false}, function(err, response, body) {
|
||||
if(err || response.statusCode != 302) {
|
||||
callback(err || "HTTP error " + response.statusCode);
|
||||
return;
|
||||
@@ -350,32 +350,23 @@ SteamCommunity.prototype._myProfile = function(endpoint, form, callback) {
|
||||
callback(new Error("Can't get profile URL"));
|
||||
return;
|
||||
}
|
||||
|
||||
(form ? self.request.post : self.request)("https://steamcommunity.com" + match[1] + "/" + endpoint, form ? {"form": form} : {}, callback);
|
||||
});
|
||||
|
||||
var options = {
|
||||
"uri": "https://steamcommunity.com" + match[1] + "/" + endpoint,
|
||||
"method": "GET"
|
||||
};
|
||||
|
||||
if (form) {
|
||||
options.method = "POST";
|
||||
options.form = form;
|
||||
}
|
||||
|
||||
self.httpRequest(options, callback, "steamcommunity");
|
||||
}, "steamcommunity");
|
||||
};
|
||||
|
||||
SteamCommunity.prototype._checkHttpError = function(err, response, callback) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
return true;
|
||||
}
|
||||
|
||||
if(response.statusCode >= 300 && response.statusCode <= 399 && response.headers.location.indexOf('/login') != -1) {
|
||||
callback(new Error("Not Logged In"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if(response.statusCode >= 400) {
|
||||
var error = new Error("HTTP error " + response.statusCode);
|
||||
error.code = response.statusCode;
|
||||
callback(error);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
require('./components/http.js');
|
||||
require('./components/chat.js');
|
||||
require('./components/profile.js');
|
||||
require('./components/market.js');
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "steamcommunity",
|
||||
"version": "3.18.7",
|
||||
"version": "3.19.2",
|
||||
"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",
|
||||
@@ -17,8 +17,11 @@
|
||||
"node-bignumber": "^1.2.1",
|
||||
"steamid": "^0.3.1",
|
||||
"xml2js": "^0.4.11",
|
||||
"cheerio": "^0.19.0",
|
||||
"cheerio": "^0.20.0",
|
||||
"async": "^1.4.2",
|
||||
"steam-totp": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user