steamutils 1.4.23 → 1.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/.idea/codeStyles/Project.xml +0 -1
  2. package/.idea/git_toolbox_blame.xml +6 -0
  3. package/.idea/git_toolbox_prj.xml +15 -0
  4. package/.prettierrc.json +3 -3
  5. package/SteamClient.js +2658 -2658
  6. package/bufferHelpers.js +115 -115
  7. package/cheerio.js +103 -103
  8. package/const.js +336 -336
  9. package/create_remote_file.js +66 -66
  10. package/index.js +125 -64
  11. package/package.json +1 -1
  12. package/protos/csgo/base_gcmessages.proto +553 -553
  13. package/protos/csgo/base_gcmessages_csgo.proto +547 -547
  14. package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
  15. package/protos/csgo/clientmessages.proto +48 -48
  16. package/protos/csgo/connectionless_netmessages.proto +17 -17
  17. package/protos/csgo/cs_gameevents.proto +35 -35
  18. package/protos/csgo/cs_usercmd.proto +34 -34
  19. package/protos/csgo/cstrike15_gcmessages.proto +1431 -1431
  20. package/protos/csgo/cstrike15_usermessages.proto +592 -592
  21. package/protos/csgo/demo.proto +165 -165
  22. package/protos/csgo/econ_gcmessages.proto +219 -219
  23. package/protos/csgo/engine_gcmessages.proto +14 -14
  24. package/protos/csgo/enums_clientserver.proto +1529 -1529
  25. package/protos/csgo/fatdemo.proto +125 -125
  26. package/protos/csgo/gameevents.proto +120 -120
  27. package/protos/csgo/gcsdk_gcmessages.proto +323 -323
  28. package/protos/csgo/gcsystemmsgs.proto +243 -243
  29. package/protos/csgo/netmessages.proto +618 -618
  30. package/protos/csgo/network_connection.proto +126 -126
  31. package/protos/csgo/networkbasetypes.proto +246 -246
  32. package/protos/csgo/networksystem_protomessages.proto +17 -17
  33. package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
  34. package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
  35. package/protos/csgo/steammessages.proto +620 -620
  36. package/protos/csgo/steammessages_base.proto +301 -301
  37. package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
  38. package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
  39. package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
  40. package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
  41. package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
  42. package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
  43. package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
  44. package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
  45. package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
  46. package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
  47. package/protos/csgo/te.proto +259 -259
  48. package/protos/csgo/uifontfile_format.proto +13 -13
  49. package/protos/csgo/usercmd.proto +39 -39
  50. package/protos/csgo/usermessages.proto +752 -752
  51. package/protos/csgo/valveextensions.proto +17 -17
  52. package/protos/google/protobuf/descriptor.proto +281 -281
  53. package/protos/steam/clientmetrics.proto +45 -45
  54. package/protos/steam/content_manifest.proto +62 -62
  55. package/protos/steam/contenthubs.proto +41 -41
  56. package/protos/steam/encrypted_app_ticket.proto +10 -10
  57. package/protos/steam/enums.proto +501 -501
  58. package/protos/steam/enums_clientserver.proto +1508 -1508
  59. package/protos/steam/enums_productinfo.proto +14 -14
  60. package/protos/steam/htmlmessages.proto +1039 -1039
  61. package/protos/steam/offline_ticket.proto +8 -8
  62. package/protos/steam/steamdatagram_messages_auth.proto +65 -65
  63. package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
  64. package/protos/steam/steammessages_accounthardware.steamclient.proto +167 -167
  65. package/protos/steam/steammessages_appoverview.proto +204 -204
  66. package/protos/steam/steammessages_auth.steamclient.proto +375 -375
  67. package/protos/steam/steammessages_base.proto +335 -335
  68. package/protos/steam/steammessages_broadcast.steamclient.proto +618 -618
  69. package/protos/steam/steammessages_chat.steamclient.proto +1070 -1070
  70. package/protos/steam/steammessages_client_objects.proto +649 -649
  71. package/protos/steam/steammessages_clientlanp2p.proto +43 -43
  72. package/protos/steam/steammessages_clientmetrics.steamclient.proto +192 -192
  73. package/protos/steam/steammessages_clientnotificationtypes.proto +250 -250
  74. package/protos/steam/steammessages_clientserver.proto +392 -392
  75. package/protos/steam/steammessages_clientserver_2.proto +771 -771
  76. package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
  77. package/protos/steam/steammessages_clientserver_friends.proto +260 -260
  78. package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
  79. package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
  80. package/protos/steam/steammessages_clientserver_login.proto +167 -167
  81. package/protos/steam/steammessages_clientserver_mms.proto +233 -233
  82. package/protos/steam/steammessages_clientserver_ucm.proto +207 -207
  83. package/protos/steam/steammessages_clientserver_uds.proto +125 -125
  84. package/protos/steam/steammessages_clientserver_ufs.proto +45 -45
  85. package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
  86. package/protos/steam/steammessages_clientsettings.proto +208 -208
  87. package/protos/steam/steammessages_cloud.steamclient.proto +422 -422
  88. package/protos/steam/steammessages_contentsystem.steamclient.proto +123 -123
  89. package/protos/steam/steammessages_credentials.steamclient.proto +96 -96
  90. package/protos/steam/steammessages_datapublisher.steamclient.proto +102 -102
  91. package/protos/steam/steammessages_depotbuilder.steamclient.proto +99 -99
  92. package/protos/steam/steammessages_deviceauth.steamclient.proto +169 -169
  93. package/protos/steam/steammessages_econ.steamclient.proto +137 -137
  94. package/protos/steam/steammessages_familygroups.steamclient.proto +441 -441
  95. package/protos/steam/steammessages_friendmessages.steamclient.proto +141 -141
  96. package/protos/steam/steammessages_gamenetworking.steamclient.proto +25 -25
  97. package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
  98. package/protos/steam/steammessages_gamenotifications.steamclient.proto +131 -131
  99. package/protos/steam/steammessages_gameservers.steamclient.proto +136 -136
  100. package/protos/steam/steammessages_hiddevices.proto +157 -157
  101. package/protos/steam/steammessages_inventory.steamclient.proto +172 -172
  102. package/protos/steam/steammessages_linkfilter.steamclient.proto +39 -39
  103. package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -29
  104. package/protos/steam/steammessages_market.steamclient.proto +22 -22
  105. package/protos/steam/steammessages_marketingmessages.steamclient.proto +273 -273
  106. package/protos/steam/steammessages_offline.steamclient.proto +33 -33
  107. package/protos/steam/steammessages_parental.steamclient.proto +262 -262
  108. package/protos/steam/steammessages_parties.steamclient.proto +75 -75
  109. package/protos/steam/steammessages_partnerapps.steamclient.proto +106 -106
  110. package/protos/steam/steammessages_player.steamclient.proto +915 -915
  111. package/protos/steam/steammessages_publishedfile.steamclient.proto +737 -737
  112. package/protos/steam/steammessages_qms.steamclient.proto +111 -111
  113. package/protos/steam/steammessages_remoteclient.proto +100 -100
  114. package/protos/steam/steammessages_remoteclient_discovery.proto +244 -244
  115. package/protos/steam/steammessages_remoteclient_service.steamclient.proto +31 -31
  116. package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
  117. package/protos/steam/steammessages_remoteplay.proto +975 -975
  118. package/protos/steam/steammessages_secrets.steamclient.proto +35 -35
  119. package/protos/steam/steammessages_shader.steamclient.proto +89 -89
  120. package/protos/steam/steammessages_site_license.steamclient.proto +103 -103
  121. package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
  122. package/protos/steam/steammessages_siteserverui.proto +130 -130
  123. package/protos/steam/steammessages_steamtv.steamclient.proto +533 -533
  124. package/protos/steam/steammessages_store.steamclient.proto +404 -404
  125. package/protos/steam/steammessages_storebrowse.steamclient.proto +457 -457
  126. package/protos/steam/steammessages_timedtrial.steamclient.proto +40 -40
  127. package/protos/steam/steammessages_twofactor.steamclient.proto +157 -157
  128. package/protos/steam/steammessages_unified_base.steamclient.proto +45 -45
  129. package/protos/steam/steammessages_unified_test.steamclient.proto +51 -51
  130. package/protos/steam/steammessages_useraccount.steamclient.proto +211 -211
  131. package/protos/steam/steammessages_vac.steamclient.proto +37 -37
  132. package/protos/steam/steammessages_video.steamclient.proto +68 -68
  133. package/protos/steam/steammessages_virtualcontroller.proto +138 -138
  134. package/protos/steam/steammessages_workshop.steamclient.proto +19 -19
  135. package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
  136. package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
  137. package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
  138. package/protos/steam/webuimessages_achievements.proto +29 -29
  139. package/protos/steam/webuimessages_base.proto +24 -24
  140. package/protos/steam/webuimessages_gamenotes.proto +21 -21
  141. package/protos/steam/webuimessages_gamescope.proto +57 -57
  142. package/protos/steam/webuimessages_steamengine.proto +41 -41
  143. package/protos/steam/webuimessages_steamos.proto +114 -114
  144. package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
  145. package/protos/steam/webuimessages_systemmanager.proto +17 -17
  146. package/protos/steam/webuimessages_transport.proto +22 -22
  147. package/protos/steam/webuimessages_transportvalidation.proto +111 -111
  148. package/protos/webui/common.proto +4024 -4024
  149. package/protos/webui/common_base.proto +27 -27
  150. package/protos/webui/service_accountcart.proto +153 -153
  151. package/protos/webui/service_accountlinking.proto +27 -27
  152. package/protos/webui/service_accountprivacy.proto +42 -42
  153. package/protos/webui/service_accountprivateapps.proto +34 -34
  154. package/protos/webui/service_auction.proto +97 -97
  155. package/protos/webui/service_authentication.proto +222 -222
  156. package/protos/webui/service_authenticationsupport.proto +74 -74
  157. package/protos/webui/service_broadcast.proto +562 -562
  158. package/protos/webui/service_chat.proto +11 -11
  159. package/protos/webui/service_chatroom.proto +810 -810
  160. package/protos/webui/service_chatusability.proto +107 -107
  161. package/protos/webui/service_checkout.proto +84 -84
  162. package/protos/webui/service_clan.proto +41 -41
  163. package/protos/webui/service_clanchatrooms.proto +25 -25
  164. package/protos/webui/service_clanfaqs.proto +202 -202
  165. package/protos/webui/service_clientcomm.proto +151 -151
  166. package/protos/webui/service_clientmetrics.proto +22 -22
  167. package/protos/webui/service_cloud.proto +222 -222
  168. package/protos/webui/service_cloudconfigstore.proto +51 -51
  169. package/protos/webui/service_cloudgaming.proto +30 -30
  170. package/protos/webui/service_community.proto +365 -365
  171. package/protos/webui/service_dailydeal.proto +89 -89
  172. package/protos/webui/service_econ.proto +134 -134
  173. package/protos/webui/service_embedded.proto +24 -24
  174. package/protos/webui/service_experimentservice.proto +6 -6
  175. package/protos/webui/service_familygroups.proto +355 -355
  176. package/protos/webui/service_fovasvideo.proto +15 -15
  177. package/protos/webui/service_friendmessages.proto +133 -133
  178. package/protos/webui/service_friendslist.proto +70 -70
  179. package/protos/webui/service_gamenotes.proto +15 -15
  180. package/protos/webui/service_gamerecording.proto +265 -265
  181. package/protos/webui/service_gamerecordingclip.proto +85 -85
  182. package/protos/webui/service_gamerecordingdebug.proto +52 -52
  183. package/protos/webui/service_helprequestlogs.proto +16 -16
  184. package/protos/webui/service_loyaltyrewards.proto +252 -252
  185. package/protos/webui/service_marketingmessages.proto +215 -215
  186. package/protos/webui/service_mobileapp.proto +18 -18
  187. package/protos/webui/service_mobileauth.proto +24 -24
  188. package/protos/webui/service_mobiledevice.proto +26 -26
  189. package/protos/webui/service_mobileperaccount.proto +31 -31
  190. package/protos/webui/service_news.proto +110 -110
  191. package/protos/webui/service_parental.proto +258 -258
  192. package/protos/webui/service_partnermembershipinvite.proto +34 -34
  193. package/protos/webui/service_partnerstorebrowse.proto +28 -28
  194. package/protos/webui/service_phone.proto +51 -51
  195. package/protos/webui/service_physicalgoods.proto +15 -15
  196. package/protos/webui/service_player.proto +918 -918
  197. package/protos/webui/service_promotioneventinvites.proto +109 -109
  198. package/protos/webui/service_promotionplanning.proto +186 -186
  199. package/protos/webui/service_promotionstats.proto +23 -23
  200. package/protos/webui/service_publishedfile.proto +714 -714
  201. package/protos/webui/service_publishing.proto +200 -200
  202. package/protos/webui/service_quest.proto +127 -127
  203. package/protos/webui/service_salefeature.proto +373 -373
  204. package/protos/webui/service_saleitemrewards.proto +54 -54
  205. package/protos/webui/service_shoppingcart.proto +152 -152
  206. package/protos/webui/service_steamawards.proto +76 -76
  207. package/protos/webui/service_steamcharts.proto +75 -75
  208. package/protos/webui/service_steamengine.proto +36 -36
  209. package/protos/webui/service_steamlearn.proto +876 -876
  210. package/protos/webui/service_steamnotification.proto +73 -73
  211. package/protos/webui/service_steamtv.proto +495 -495
  212. package/protos/webui/service_steamvrvoicechat.proto +67 -67
  213. package/protos/webui/service_steamvrwebrtc.proto +48 -48
  214. package/protos/webui/service_storagedevicemanager.proto +104 -104
  215. package/protos/webui/service_store.proto +359 -359
  216. package/protos/webui/service_storeappsimilarity.proto +76 -76
  217. package/protos/webui/service_storebrowse.proto +103 -103
  218. package/protos/webui/service_storemarketing.proto +44 -44
  219. package/protos/webui/service_storequery.proto +103 -103
  220. package/protos/webui/service_storesales.proto +87 -87
  221. package/protos/webui/service_storetopsellers.proto +44 -44
  222. package/protos/webui/service_systemmanager.proto +11 -11
  223. package/protos/webui/service_test_transporterror.proto +6 -6
  224. package/protos/webui/service_transportauth.proto +17 -17
  225. package/protos/webui/service_transportvalidation.proto +69 -69
  226. package/protos/webui/service_twofactor.proto +170 -170
  227. package/protos/webui/service_useraccount.proto +142 -142
  228. package/protos/webui/service_usergameactivity.proto +34 -34
  229. package/protos/webui/service_usergamenotes.proto +70 -70
  230. package/protos/webui/service_usernews.proto +68 -68
  231. package/protos/webui/service_userreviews.proto +97 -97
  232. package/protos/webui/service_video.proto +50 -50
  233. package/protos/webui/service_videoclip.proto +62 -62
  234. package/protos/webui/service_voicechat.proto +139 -139
  235. package/protos/webui/service_webrtc.proto +52 -52
  236. package/remote.js +6784 -6784
  237. package/utils.js +168 -168
  238. package/.idea/deployment.xml +0 -14
@@ -1,66 +1,66 @@
1
- import SteamUser from "./index.js";
2
- import _ from "lodash";
3
-
4
- (async function () {
5
- const xx = SteamUser;
6
-
7
- let json = "";
8
-
9
- function doWrite(user, is_static) {
10
- for (const methodName of Object.getOwnPropertyNames(user)) {
11
- if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
12
- continue;
13
- }
14
- const fnString = user[methodName].toString().trim();
15
- const async = "async";
16
- // const async = fnString.startsWith("async") ? "async" : "";
17
- let params = fnString.split("(")[1].split(")")[0];
18
- const paramsList = params.split(",");
19
- for (let i = 0; i < paramsList.length; i++) {
20
- if (paramsList[i].includes("=")) {
21
- paramsList[i] = paramsList[i].split("=")[0].trim();
22
- }
23
- }
24
- params = paramsList.join(", ").trim();
25
- if (params.startsWith("{") && !params.endsWith("}")) {
26
- params = `${params}}`;
27
- }
28
-
29
- json += `${`
30
- ${is_static ? "static " : ""} ${async} ${methodName}(${params}){
31
- const __params = [${params}];
32
- if(__params.length === 1 && __params[0] === undefined){
33
- __params.length = 0
34
- }
35
- let __cookies = this._cookies;
36
- if (__cookies) {
37
- if (!Array.isArray(__cookies)) {
38
- __cookies = [__cookies];
39
- }
40
- __cookies = __cookies.map(function (cookie) {
41
- return cookie.toString();
42
- });
43
- }
44
-
45
- try {
46
- const result = (
47
- await axios.post(getAppURL(), {
48
- method: "${methodName}",
49
- params: __params,
50
- cookies: __cookies,
51
- is_static: ${!!is_static}
52
- })
53
- ).data?.result;
54
- return result
55
- } catch (e) {
56
- /* empty */
57
- }
58
- }`.trim()}\n`;
59
- }
60
- }
61
-
62
- doWrite(SteamUser.prototype, false);
63
- doWrite(SteamUser, true);
64
-
65
- console.log("");
66
- })();
1
+ import SteamUser from "./index.js";
2
+ import _ from "lodash";
3
+
4
+ (async function () {
5
+ const xx = SteamUser;
6
+
7
+ let json = "";
8
+
9
+ function doWrite(user, is_static) {
10
+ for (const methodName of Object.getOwnPropertyNames(user)) {
11
+ if (methodName === "constructor" || methodName === "length" || methodName === "name" || methodName === "prototype" || methodName === "RequestXML_TooManyRequests" || methodName === "MAX_RETRY") {
12
+ continue;
13
+ }
14
+ const fnString = user[methodName].toString().trim();
15
+ const async = "async";
16
+ // const async = fnString.startsWith("async") ? "async" : "";
17
+ let params = fnString.split("(")[1].split(")")[0];
18
+ const paramsList = params.split(",");
19
+ for (let i = 0; i < paramsList.length; i++) {
20
+ if (paramsList[i].includes("=")) {
21
+ paramsList[i] = paramsList[i].split("=")[0].trim();
22
+ }
23
+ }
24
+ params = paramsList.join(", ").trim();
25
+ if (params.startsWith("{") && !params.endsWith("}")) {
26
+ params = `${params}}`;
27
+ }
28
+
29
+ json += `${`
30
+ ${is_static ? "static " : ""} ${async} ${methodName}(${params}){
31
+ const __params = [${params}];
32
+ if(__params.length === 1 && __params[0] === undefined){
33
+ __params.length = 0
34
+ }
35
+ let __cookies = this._cookies;
36
+ if (__cookies) {
37
+ if (!Array.isArray(__cookies)) {
38
+ __cookies = [__cookies];
39
+ }
40
+ __cookies = __cookies.map(function (cookie) {
41
+ return cookie.toString();
42
+ });
43
+ }
44
+
45
+ try {
46
+ const result = (
47
+ await axios.post(getAppURL(), {
48
+ method: "${methodName}",
49
+ params: __params,
50
+ cookies: __cookies,
51
+ is_static: ${!!is_static}
52
+ })
53
+ ).data?.result;
54
+ return result
55
+ } catch (e) {
56
+ /* empty */
57
+ }
58
+ }`.trim()}\n`;
59
+ }
60
+ }
61
+
62
+ doWrite(SteamUser.prototype, false);
63
+ doWrite(SteamUser, true);
64
+
65
+ console.log("");
66
+ })();
package/index.js CHANGED
@@ -1140,6 +1140,9 @@ export default class SteamUser {
1140
1140
  if (value === undefined || value === null) {
1141
1141
  value = "";
1142
1142
  }
1143
+ if (typeof value === "boolean" || typeof value === "number") {
1144
+ value = value.toString();
1145
+ }
1143
1146
  try {
1144
1147
  form.append(name, value);
1145
1148
  } catch (e) {
@@ -4911,55 +4914,104 @@ export default class SteamUser {
4911
4914
  }
4912
4915
 
4913
4916
  async removePhoneNumber() {
4914
- const result = await this._httpRequest(`https://help.steampowered.com/en/wizard/HelpRemovePhoneNumber?redir=store/account`);
4915
- if (!result?.data || typeof result.data !== "string" || result instanceof ResponseError) {
4917
+ const getHelpLink = async () => {
4918
+ const response = await this._httpRequest("https://help.steampowered.com/en/wizard/HelpRemovePhoneNumber?redir=store/account");
4919
+ const html = response.data;
4920
+ const $ = cheerio.load(html);
4921
+ const buttons = $("a.help_wizard_button");
4922
+ const buttonsMapping = [...buttons].map(function (el) {
4923
+ el = $(el);
4924
+ const text = el.text().trim();
4925
+ const link = el.attr("href");
4926
+ return {
4927
+ text,
4928
+ link,
4929
+ };
4930
+ });
4931
+
4932
+ const steamAppConfirmBtn = buttonsMapping.find(({ text }) => text === "Send a confirmation to my Steam Mobile app");
4933
+ if (steamAppConfirmBtn) {
4934
+ return {
4935
+ ...steamAppConfirmBtn,
4936
+ type: "SteamAppConfirm",
4937
+ };
4938
+ }
4939
+
4940
+ const phoneTextingConfirmBtn = buttonsMapping.find(({ text }) => text.startsWith("Text an account verification code to my phone number ending in"));
4941
+ if (phoneTextingConfirmBtn) {
4942
+ return {
4943
+ ...phoneTextingConfirmBtn,
4944
+ type: "PhoneTextingConfirm",
4945
+ };
4946
+ }
4947
+ };
4948
+
4949
+ const isVerificationCodeSent = (html) => {
4950
+ const $ = cheerio.load(html);
4951
+ const help_page_title = $("#forgot_login_code_form .help_page_title").text().trim();
4952
+ return help_page_title.startsWith("A verification code was sent to phone number ending in");
4953
+ };
4954
+
4955
+ const { type, link: helpLink } = (await getHelpLink()) || {};
4956
+ if (!type) {
4916
4957
  return;
4917
4958
  }
4918
4959
 
4919
- let href = null;
4920
- const $ = cheerio.load(result.data);
4921
- $("a").each(function (index, el) {
4922
- if (!href) {
4923
- const link = $(el).attr("href");
4924
- if (link?.startsWith("https://help.steampowered.com/en/wizard/HelpWithLoginInfoEnterCode?s=")) {
4925
- href = link;
4926
- }
4927
- }
4928
- });
4929
- let s = null;
4930
- try {
4931
- s = URL.parse(href)
4932
- .query.split("&")
4933
- .map((q) => q.split("="))
4934
- .find((q) => q[0] === "s")[1];
4935
- } catch (e) {}
4936
- if (!s)
4960
+ const result = await this._httpRequest(helpLink);
4961
+ const html = result?.data;
4962
+ if (!html || typeof html !== "string" || result instanceof ResponseError) {
4963
+ return;
4964
+ }
4965
+
4966
+ const params = SteamUser.parseWizardPageParams(html);
4967
+ const paramsExample = {
4968
+ g_sessionID: "a32bcb41a7917a9f0e20a02a",
4969
+ issue: {
4970
+ s: "8531824267074740155",
4971
+ reset: "4",
4972
+ lost: "0",
4973
+ method: "4",
4974
+ issueid: "403",
4975
+ },
4976
+ g_rgDefaultWizardPageParams: {
4977
+ wizard_ajax: 1,
4978
+ gamepad: 0,
4979
+ },
4980
+ };
4981
+
4982
+ if (!params) {
4937
4983
  return {
4938
4984
  success: false,
4939
4985
  };
4986
+ }
4940
4987
 
4941
- const sendAccountRecoveryCodeResult = await this._httpRequest({
4942
- url: `https://help.steampowered.com/en/wizard/AjaxSendAccountRecoveryCode`,
4943
- headers: {
4944
- accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
4945
- "Content-Type": "application/x-www-form-urlencoded",
4946
- },
4947
- data: {
4948
- wizard_ajax: "1",
4949
- gamepad: "0",
4950
- s,
4951
- method: 4,
4952
- link: "",
4953
- },
4954
- method: "POST",
4955
- });
4956
- if (sendAccountRecoveryCodeResult instanceof ResponseError) {
4957
- return sendAccountRecoveryCodeResult;
4988
+ if (!isVerificationCodeSent(html)) {
4989
+ const sendAccountRecoveryCodeResult = await this._httpRequest({
4990
+ url: `https://help.steampowered.com/en/wizard/AjaxSendAccountRecoveryCode`,
4991
+ headers: {
4992
+ "x-requested-with": "XMLHttpRequest",
4993
+ "content-type": "application/x-www-form-urlencoded",
4994
+ },
4995
+ data: {
4996
+ ...params.g_rgDefaultWizardPageParams,
4997
+ s: params.issue.s,
4998
+ method: params.issue.method,
4999
+ link: "",
5000
+ },
5001
+ method: "POST",
5002
+ });
5003
+ if (sendAccountRecoveryCodeResult instanceof ResponseError) {
5004
+ return sendAccountRecoveryCodeResult;
5005
+ }
5006
+ return {
5007
+ success: !!sendAccountRecoveryCodeResult.data?.success,
5008
+ params,
5009
+ };
4958
5010
  }
4959
5011
 
4960
5012
  return {
4961
- success: !!sendAccountRecoveryCodeResult.data?.success,
4962
- s,
5013
+ success: true,
5014
+ params,
4963
5015
  };
4964
5016
  }
4965
5017
 
@@ -7280,6 +7332,39 @@ export default class SteamUser {
7280
7332
  } catch (e) {}
7281
7333
  }
7282
7334
 
7335
+ static parseWizardPageParams(html) {
7336
+ if (!html || typeof html !== "string") {
7337
+ return;
7338
+ }
7339
+
7340
+ const $ = cheerio.load(html);
7341
+ const forgot_login_code_form = $("#forgot_login_code_form");
7342
+ const s = forgot_login_code_form.find('input[name="s"]').val();
7343
+ const reset = forgot_login_code_form.find('input[name="reset"]').val();
7344
+ const lost = forgot_login_code_form.find('input[name="lost"]').val();
7345
+ const method = forgot_login_code_form.find('input[name="method"]').val();
7346
+ const issueid = forgot_login_code_form.find('input[name="issueid"]').val();
7347
+
7348
+ const cleanHtml = html.replaceAll(/\s+/gi, " ");
7349
+ //do not remove this line
7350
+ const g_sessionID = cleanHtml.substringBetweenOrNull('var g_sessionID = "', '";');
7351
+ const g_rgDefaultWizardPageParamsStr = cleanHtml.substringAfter("g_rgDefaultWizardPageParams =").trim().substringBefore(";").trim();
7352
+ const g_rgDefaultWizardPageParams = eval(`() => {return ${g_rgDefaultWizardPageParamsStr};}`)();
7353
+ delete g_rgDefaultWizardPageParams.sessionid;
7354
+
7355
+ return {
7356
+ g_sessionID,
7357
+ issue: {
7358
+ s,
7359
+ reset,
7360
+ lost,
7361
+ method,
7362
+ issueid,
7363
+ },
7364
+ g_rgDefaultWizardPageParams,
7365
+ };
7366
+ }
7367
+
7283
7368
  async enumerateTokens(accessToken) {
7284
7369
  if (!accessToken || typeof accessToken !== "string") {
7285
7370
  console.error("revokeAccessToken", "invalid accessToken", accessToken);
@@ -7466,31 +7551,7 @@ export default class SteamUser {
7466
7551
  if (!html.includes("For security, verify that the code in the box below matches the code we display on the confirmations page.")) {
7467
7552
  return;
7468
7553
  }
7469
- const $ = cheerio.load(html);
7470
- const forgot_login_code_form = $("#forgot_login_code_form");
7471
- const s = forgot_login_code_form.find('input[name="s"]').val();
7472
- const reset = forgot_login_code_form.find('input[name="reset"]').val();
7473
- const lost = forgot_login_code_form.find('input[name="lost"]').val();
7474
- const method = forgot_login_code_form.find('input[name="method"]').val();
7475
- const issueid = forgot_login_code_form.find('input[name="issueid"]').val();
7476
-
7477
- const cleanHtml = html.replaceAll(/\s+/gi, " ");
7478
- //do not remove this line
7479
- const g_sessionID = cleanHtml.substringAfter("g_sessionID =").trim().substringBefore(";").replaceAll('"', "").trim();
7480
- const g_rgDefaultWizardPageParamsStr = cleanHtml.substringAfter("g_rgDefaultWizardPageParams =").trim().substringBefore(";").trim();
7481
- const g_rgDefaultWizardPageParams = eval(`() => {return ${g_rgDefaultWizardPageParamsStr};}`)();
7482
- delete g_rgDefaultWizardPageParams.sessionid;
7483
-
7484
- return {
7485
- issue: {
7486
- s,
7487
- reset,
7488
- lost,
7489
- method,
7490
- issueid,
7491
- },
7492
- g_rgDefaultWizardPageParams,
7493
- };
7554
+ return SteamUser.parseWizardPageParams(html);
7494
7555
  };
7495
7556
  const sendAccountRecoveryCode = async (issue, g_rgDefaultWizardPageParams, helpLink) => {
7496
7557
  const result = await this._httpRequest({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steamutils",
3
- "version": "1.4.23",
3
+ "version": "1.4.25",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "alpha-common-utils": "^1.0.6",