From af2ba3f56b68d6052a0edfb51c4194f5561c74b7 Mon Sep 17 00:00:00 2001 From: Alexander Corn Date: Sat, 25 Jul 2015 01:55:33 -0400 Subject: [PATCH] Added editProfile method --- components/profile.js | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/components/profile.js b/components/profile.js index c2f8423..7c855ff 100644 --- a/components/profile.js +++ b/components/profile.js @@ -1,4 +1,5 @@ var SteamCommunity = require('../index.js'); +var SteamID = require('steamid'); var Cheerio = require('cheerio'); SteamCommunity.PrivacyState = { @@ -13,6 +14,105 @@ var CommentPrivacyState = { "3": "commentanyone" }; +SteamCommunity.prototype.editProfile = function(settings, callback) { + var self = this; + this._myProfile("edit", null, function(err, response, body) { + if(err || response.statusCode != 200) { + callback(err || new Error("HTTP error " + response.statusCode)); + return; + } + + var $ = Cheerio.load(body); + var form = $('#editForm'); + if(!form) { + callback(new Error("Malformed response")); + return; + } + + var values = {}; + form.serializeArray().forEach(function(item) { + values[item.name] = item.value; + }); + + for(var i in settings) { + if(!settings.hasOwnProperty(i)) { + continue; + } + + switch(i) { + case 'name': + values.personaName = settings[i]; + break; + + case 'realName': + values.real_name = settings[i]; + break; + + case 'summary': + values.summary = settings[i]; + break; + + case 'country': + values.country = settings[i]; + break; + + case 'state': + values.state = settings[i]; + break; + + case 'city': + values.city = settings[i]; + break; + + case 'customURL': + values.customURL = settings[i]; + break; + + case 'background': + // The assetid of our desired profile background + values.profile_background = settings[i]; + break; + + case 'featuredBadge': + // Currently, game badges aren't supported + values.favorite_badge_badgeid = settings[i]; + break; + + case 'primaryGroup': + if(typeof settings[i] === 'object' && settings[i].accountid) { + values.primary_group_steamid = settings[i].accountid; + } else { + values.primary_group_steamid = new SteamID(settings[i]).accountid; + } + + break; + + // TODO: profile showcases + } + } + + self._myProfile("edit", values, function(err, response, body) { + if(err || response.statusCode != 200) { + callback(err || new Error("HTTP error " + response.statusCode)); + return; + } + + // Check for an error + var $ = Cheerio.load(body); + var error = $('#errorText .formRowFields'); + if(error) { + error = error.text().trim(); + if(error) { + callback(new Error(error)); + return; + } + } + + callback(null); + }); + }); +}; + SteamCommunity.prototype.profileSettings = function(settings, callback) { var self = this; this._myProfile("edit/settings", null, function(err, response, body) {