steam-condenser 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +9 -9
- data/README.md +1 -0
- data/Rakefile +2 -2
- data/lib/steam-condenser/version.rb +1 -1
- data/lib/steam/community/alien_swarm/alien_swarm_stats.rb +1 -0
- data/lib/steam/community/cacheable.rb +1 -1
- data/lib/steam/community/css/css_stats.rb +1 -0
- data/lib/steam/community/defense_grid/defense_grid_stats.rb +1 -0
- data/lib/steam/community/dods/dods_stats.rb +1 -0
- data/lib/steam/community/dota2/dota2_beta_inventory.rb +4 -1
- data/lib/steam/community/dota2/dota2_inventory.rb +4 -1
- data/lib/steam/community/game_inventory.rb +68 -63
- data/lib/steam/community/game_item.rb +65 -22
- data/lib/steam/community/game_item_schema.rb +131 -0
- data/lib/steam/community/game_stats.rb +1 -1
- data/lib/steam/community/l4d/l4d2_stats.rb +3 -1
- data/lib/steam/community/l4d/l4d_stats.rb +3 -1
- data/lib/steam/community/portal2/portal2_inventory.rb +4 -1
- data/lib/steam/community/portal2/portal2_item.rb +8 -0
- data/lib/steam/community/portal2/portal2_stats.rb +1 -0
- data/lib/steam/community/steam_game.rb +15 -2
- data/lib/steam/community/steam_id.rb +39 -42
- data/lib/steam/community/tf2/tf2_beta_inventory.rb +4 -1
- data/lib/steam/community/tf2/tf2_inventory.rb +4 -1
- data/lib/steam/community/tf2/tf2_item.rb +8 -0
- data/lib/steam/community/tf2/tf2_stats.rb +1 -0
- data/lib/steam/community/web_api.rb +2 -1
- data/lib/steam/packets/c2m_checkmd5_packet.rb +1 -0
- data/lib/steam/packets/s2m_heartbeat2_packet.rb +1 -0
- data/lib/steam/servers/master_server.rb +6 -1
- data/lib/steam/servers/server.rb +12 -1
- data/lib/steam/servers/source_server.rb +12 -2
- data/lib/steam/sockets/master_server_socket.rb +5 -1
- data/lib/steam/sockets/rcon_socket.rb +9 -2
- data/lib/steam/sockets/steam_socket.rb +5 -1
- data/steam-condenser.gemspec +3 -3
- data/test/helper.rb +2 -2
- data/test/steam/{communtiy → community}/test_cacheable.rb +0 -0
- data/{pkg/steam-condenser-1.2.0/test/steam/communtiy → test/steam/community}/test_steam_group.rb +0 -0
- data/{pkg/steam-condenser-1.2.0/test/steam/communtiy → test/steam/community}/test_steam_id.rb +22 -0
- data/{pkg/steam-condenser-1.2.0/test/steam/communtiy → test/steam/community}/test_web_api.rb +0 -0
- data/test/steam/servers/test_source_server.rb +10 -2
- data/test/steam/sockets/test_rcon_socket.rb +3 -3
- metadata +112 -474
- data/doc/A2M_GET_SERVERS_BATCH2_Packet.html +0 -426
- data/doc/A2S_INFO_Packet.html +0 -260
- data/doc/A2S_PLAYER_Packet.html +0 -295
- data/doc/A2S_RULES_Packet.html +0 -296
- data/doc/A2S_SERVERQUERY_GETCHALLENGE_Packet.html +0 -261
- data/doc/AbstractL4DStats.html +0 -978
- data/doc/AbstractL4DWeapon.html +0 -734
- data/doc/Achievement.html +0 -660
- data/doc/AlienSwarmMission.html +0 -1557
- data/doc/AlienSwarmStats.html +0 -965
- data/doc/AlienSwarmWeapon.html +0 -640
- data/doc/AppNews.html +0 -1442
- data/doc/C2M_CHECKMD5_Packet.html +0 -341
- data/doc/CSSMap.html +0 -806
- data/doc/CSSStats.html +0 -825
- data/doc/CSSWeapon.html +0 -889
- data/doc/Cacheable.html +0 -913
- data/doc/Cacheable/ClassMethods.html +0 -696
- data/doc/DefenseGridStats.html +0 -2559
- data/doc/DoDSClass.html +0 -1264
- data/doc/DoDSStats.html +0 -486
- data/doc/DoDSWeapon.html +0 -806
- data/doc/Dota2BetaInventory.html +0 -339
- data/doc/Dota2Inventory.html +0 -339
- data/doc/Dota2Item.html +0 -388
- data/doc/Dota2Stats.html +0 -366
- data/doc/GameAchievement.html +0 -1257
- data/doc/GameClass.html +0 -321
- data/doc/GameInventory.html +0 -1363
- data/doc/GameItem.html +0 -1339
- data/doc/GameLeaderboard.html +0 -1609
- data/doc/GameLeaderboardEntry.html +0 -629
- data/doc/GameSchema.html +0 -568
- data/doc/GameServer.html +0 -2405
- data/doc/GameStats.html +0 -1461
- data/doc/GameWeapon.html +0 -590
- data/doc/GoldSrcServer.html +0 -740
- data/doc/GoldSrcSocket.html +0 -850
- data/doc/ItemSchema.html +0 -780
- data/doc/L4D2Map.html +0 -739
- data/doc/L4D2Stats.html +0 -930
- data/doc/L4D2Weapon.html +0 -486
- data/doc/L4DExplosive.html +0 -374
- data/doc/L4DMap.html +0 -776
- data/doc/L4DStats.html +0 -530
- data/doc/L4DWeapon.html +0 -296
- data/doc/M2A_SERVER_BATCH_Packet.html +0 -430
- data/doc/M2C_ISVALIDMD5_Packet.html +0 -383
- data/doc/M2S_REQUESTRESTART_Packet.html +0 -382
- data/doc/MasterServer.html +0 -1070
- data/doc/MasterServerSocket.html +0 -293
- data/doc/Module.html +0 -194
- data/doc/PacketFormatError.html +0 -257
- data/doc/Portal2Inventory.html +0 -339
- data/doc/Portal2Item.html +0 -499
- data/doc/Portal2Stats.html +0 -368
- data/doc/RCONAuthRequest.html +0 -318
- data/doc/RCONAuthResponse.html +0 -305
- data/doc/RCONBanError.html +0 -247
- data/doc/RCONExecRequest.html +0 -318
- data/doc/RCONExecResponse.html +0 -407
- data/doc/RCONGoldSrcRequest.html +0 -363
- data/doc/RCONGoldSrcResponse.html +0 -367
- data/doc/RCONNoAuthError.html +0 -247
- data/doc/RCONPacket.html +0 -548
- data/doc/RCONPacketFactory.html +0 -300
- data/doc/RCONSocket.html +0 -669
- data/doc/RCONTerminator.html +0 -304
- data/doc/RequestWithChallenge.html +0 -233
- data/doc/S2A_INFO2_Packet.html +0 -371
- data/doc/S2A_INFO_BasePacket.html +0 -357
- data/doc/S2A_INFO_DETAILED_Packet.html +0 -370
- data/doc/S2A_LOGSTRING_Packet.html +0 -373
- data/doc/S2A_PLAYER_Packet.html +0 -417
- data/doc/S2A_RULES_Packet.html +0 -411
- data/doc/S2C_CHALLENGE_Packet.html +0 -370
- data/doc/S2M_HEARTBEAT2_Packet.html +0 -444
- data/doc/Server.html +0 -781
- data/doc/SourceServer.html +0 -776
- data/doc/SourceSocket.html +0 -366
- data/doc/StatsAttribute.html +0 -514
- data/doc/SteamCondenser.html +0 -155
- data/doc/SteamCondenser/A2M_GET_SERVERS_BATCH2_Packet.html +0 -413
- data/doc/SteamCondenser/A2S_INFO_Packet.html +0 -249
- data/doc/SteamCondenser/A2S_PLAYER_Packet.html +0 -281
- data/doc/SteamCondenser/A2S_RULES_Packet.html +0 -282
- data/doc/SteamCondenser/A2S_SERVERQUERY_GETCHALLENGE_Packet.html +0 -250
- data/doc/SteamCondenser/AbstractL4DStats.html +0 -954
- data/doc/SteamCondenser/AbstractL4DWeapon.html +0 -703
- data/doc/SteamCondenser/AlienSwarmMission.html +0 -1494
- data/doc/SteamCondenser/AlienSwarmStats.html +0 -938
- data/doc/SteamCondenser/AlienSwarmWeapon.html +0 -614
- data/doc/SteamCondenser/AppNews.html +0 -1387
- data/doc/SteamCondenser/C2M_CHECKMD5_Packet.html +0 -327
- data/doc/SteamCondenser/CSSMap.html +0 -774
- data/doc/SteamCondenser/CSSStats.html +0 -799
- data/doc/SteamCondenser/CSSWeapon.html +0 -855
- data/doc/SteamCondenser/Cacheable.html +0 -698
- data/doc/SteamCondenser/Cacheable/ClassMethods.html +0 -531
- data/doc/SteamCondenser/Community.html +0 -134
- data/doc/SteamCondenser/DefenseGridStats.html +0 -2455
- data/doc/SteamCondenser/DoDSClass.html +0 -1209
- data/doc/SteamCondenser/DoDSStats.html +0 -470
- data/doc/SteamCondenser/DoDSWeapon.html +0 -774
- data/doc/SteamCondenser/Error.html +0 -156
- data/doc/SteamCondenser/Error/PacketFormat.html +0 -246
- data/doc/SteamCondenser/Error/RCONBan.html +0 -237
- data/doc/SteamCondenser/Error/RCONNoAuth.html +0 -236
- data/doc/SteamCondenser/Error/Timeout.html +0 -238
- data/doc/SteamCondenser/Error/WebApi.html +0 -339
- data/doc/SteamCondenser/GameAchievement.html +0 -1210
- data/doc/SteamCondenser/GameClass.html +0 -306
- data/doc/SteamCondenser/GameInventory.html +0 -1236
- data/doc/SteamCondenser/GameItem.html +0 -1282
- data/doc/SteamCondenser/GameLeaderboard.html +0 -1562
- data/doc/SteamCondenser/GameLeaderboardEntry.html +0 -604
- data/doc/SteamCondenser/GameServer.html +0 -2337
- data/doc/SteamCondenser/GameStats.html +0 -1416
- data/doc/SteamCondenser/GameWeapon.html +0 -566
- data/doc/SteamCondenser/GoldSrcServer.html +0 -716
- data/doc/SteamCondenser/GoldSrcSocket.html +0 -831
- data/doc/SteamCondenser/L4D2Map.html +0 -713
- data/doc/SteamCondenser/L4D2Stats.html +0 -906
- data/doc/SteamCondenser/L4D2Weapon.html +0 -466
- data/doc/SteamCondenser/L4DExplosive.html +0 -362
- data/doc/SteamCondenser/L4DMap.html +0 -746
- data/doc/SteamCondenser/L4DStats.html +0 -513
- data/doc/SteamCondenser/L4DWeapon.html +0 -284
- data/doc/SteamCondenser/M2A_SERVER_BATCH_Packet.html +0 -415
- data/doc/SteamCondenser/M2C_ISVALIDMD5_Packet.html +0 -368
- data/doc/SteamCondenser/M2S_REQUESTRESTART_Packet.html +0 -367
- data/doc/SteamCondenser/MasterServer.html +0 -1046
- data/doc/SteamCondenser/MasterServerSocket.html +0 -282
- data/doc/SteamCondenser/Portal2Inventory.html +0 -217
- data/doc/SteamCondenser/Portal2Item.html +0 -483
- data/doc/SteamCondenser/Portal2Stats.html +0 -353
- data/doc/SteamCondenser/RCONAuthRequest.html +0 -306
- data/doc/SteamCondenser/RCONAuthResponse.html +0 -293
- data/doc/SteamCondenser/RCONExecRequest.html +0 -306
- data/doc/SteamCondenser/RCONExecResponse.html +0 -392
- data/doc/SteamCondenser/RCONGoldSrcRequest.html +0 -349
- data/doc/SteamCondenser/RCONGoldSrcResponse.html +0 -354
- data/doc/SteamCondenser/RCONPacket.html +0 -530
- data/doc/SteamCondenser/RCONPacketFactory.html +0 -293
- data/doc/SteamCondenser/RCONSocket.html +0 -649
- data/doc/SteamCondenser/RCONTerminator.html +0 -292
- data/doc/SteamCondenser/RequestWithChallenge.html +0 -223
- data/doc/SteamCondenser/S2A_INFO2_Packet.html +0 -359
- data/doc/SteamCondenser/S2A_INFO_BasePacket.html +0 -342
- data/doc/SteamCondenser/S2A_INFO_DETAILED_Packet.html +0 -358
- data/doc/SteamCondenser/S2A_LOGSTRING_Packet.html +0 -358
- data/doc/SteamCondenser/S2A_PLAYER_Packet.html +0 -402
- data/doc/SteamCondenser/S2A_RULES_Packet.html +0 -396
- data/doc/SteamCondenser/S2C_CHALLENGE_Packet.html +0 -356
- data/doc/SteamCondenser/S2M_HEARTBEAT2_Packet.html +0 -430
- data/doc/SteamCondenser/Server.html +0 -754
- data/doc/SteamCondenser/Servers.html +0 -133
- data/doc/SteamCondenser/SourceServer.html +0 -752
- data/doc/SteamCondenser/SourceSocket.html +0 -355
- data/doc/SteamCondenser/SteamGame.html +0 -1802
- data/doc/SteamCondenser/SteamGroup.html +0 -969
- data/doc/SteamCondenser/SteamId.html +0 -4242
- data/doc/SteamCondenser/SteamPacket.html +0 -456
- data/doc/SteamCondenser/SteamPacketFactory.html +0 -521
- data/doc/SteamCondenser/SteamPlayer.html +0 -1696
- data/doc/SteamCondenser/SteamSocket.html +0 -679
- data/doc/SteamCondenser/TF2BetaInventory.html +0 -198
- data/doc/SteamCondenser/TF2Class.html +0 -1145
- data/doc/SteamCondenser/TF2ClassFactory.html +0 -263
- data/doc/SteamCondenser/TF2Engineer.html +0 -534
- data/doc/SteamCondenser/TF2GoldenWrench.html +0 -731
- data/doc/SteamCondenser/TF2Inventory.html +0 -217
- data/doc/SteamCondenser/TF2Item.html +0 -482
- data/doc/SteamCondenser/TF2Medic.html +0 -445
- data/doc/SteamCondenser/TF2Sniper.html +0 -357
- data/doc/SteamCondenser/TF2Spy.html +0 -531
- data/doc/SteamCondenser/TF2Stats.html +0 -670
- data/doc/SteamCondenser/TimeoutError.html +0 -249
- data/doc/SteamCondenser/WebApi.html +0 -999
- data/doc/SteamCondenser/XMLData.html +0 -171
- data/doc/SteamCondenserError.html +0 -153
- data/doc/SteamGame.html +0 -1859
- data/doc/SteamGroup.html +0 -1012
- data/doc/SteamId.html +0 -4369
- data/doc/SteamPacket.html +0 -469
- data/doc/SteamPacketFactory.html +0 -545
- data/doc/SteamPlayer.html +0 -1766
- data/doc/SteamSocket.html +0 -699
- data/doc/StringIO.html +0 -947
- data/doc/TF2BetaInventory.html +0 -315
- data/doc/TF2Class.html +0 -1194
- data/doc/TF2ClassFactory.html +0 -273
- data/doc/TF2Engineer.html +0 -558
- data/doc/TF2GoldenWrench.html +0 -760
- data/doc/TF2Inventory.html +0 -339
- data/doc/TF2Item.html +0 -499
- data/doc/TF2Medic.html +0 -465
- data/doc/TF2Sniper.html +0 -373
- data/doc/TF2Spy.html +0 -555
- data/doc/TF2Stats.html +0 -696
- data/doc/WebApi.html +0 -1021
- data/doc/WebApiError.html +0 -347
- data/doc/XMLData.html +0 -253
- data/doc/_index.html +0 -717
- data/doc/class_list.html +0 -53
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -57
- data/doc/css/style.css +0 -328
- data/doc/file.LICENSE.html +0 -100
- data/doc/file.README.html +0 -136
- data/doc/file_list.html +0 -58
- data/doc/frames.html +0 -28
- data/doc/index.html +0 -136
- data/doc/js/app.js +0 -214
- data/doc/js/full_list.js +0 -173
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -3988
- data/doc/methods_list.html +0 -3900
- data/doc/top-level-namespace.html +0 -114
- data/pkg/steam-condenser-1.2.0.gem +0 -0
- data/pkg/steam-condenser-1.2.0/Gemfile +0 -3
- data/pkg/steam-condenser-1.2.0/Gemfile.lock +0 -30
- data/pkg/steam-condenser-1.2.0/LICENSE +0 -25
- data/pkg/steam-condenser-1.2.0/README.md +0 -47
- data/pkg/steam-condenser-1.2.0/Rakefile +0 -46
- data/pkg/steam-condenser-1.2.0/lib/core_ext/stringio.rb +0 -91
- data/pkg/steam-condenser-1.2.0/lib/errors/packet_format_error.rb +0 -21
- data/pkg/steam-condenser-1.2.0/lib/errors/rcon_ban_error.rb +0 -22
- data/pkg/steam-condenser-1.2.0/lib/errors/rcon_no_auth_error.rb +0 -21
- data/pkg/steam-condenser-1.2.0/lib/errors/steam_condenser_error.rb +0 -11
- data/pkg/steam-condenser-1.2.0/lib/errors/timeout_error.rb +0 -28
- data/pkg/steam-condenser-1.2.0/lib/errors/web_api_error.rb +0 -57
- data/pkg/steam-condenser-1.2.0/lib/steam-condenser.rb +0 -18
- data/pkg/steam-condenser-1.2.0/lib/steam-condenser/community.rb +0 -24
- data/pkg/steam-condenser-1.2.0/lib/steam-condenser/servers.rb +0 -24
- data/pkg/steam-condenser-1.2.0/lib/steam-condenser/version.rb +0 -11
- data/pkg/steam-condenser-1.2.0/lib/steam/community/alien_swarm/alien_swarm_mission.rb +0 -119
- data/pkg/steam-condenser-1.2.0/lib/steam/community/alien_swarm/alien_swarm_stats.rb +0 -179
- data/pkg/steam-condenser-1.2.0/lib/steam/community/alien_swarm/alien_swarm_weapon.rb +0 -49
- data/pkg/steam-condenser-1.2.0/lib/steam/community/app_news.rb +0 -133
- data/pkg/steam-condenser-1.2.0/lib/steam/community/cacheable.rb +0 -137
- data/pkg/steam-condenser-1.2.0/lib/steam/community/css/css_map.rb +0 -61
- data/pkg/steam-condenser-1.2.0/lib/steam/community/css/css_stats.rb +0 -136
- data/pkg/steam-condenser-1.2.0/lib/steam/community/css/css_weapon.rb +0 -69
- data/pkg/steam-condenser-1.2.0/lib/steam/community/defense_grid/defense_grid_stats.rb +0 -237
- data/pkg/steam-condenser-1.2.0/lib/steam/community/dods/dods_class.rb +0 -90
- data/pkg/steam-condenser-1.2.0/lib/steam/community/dods/dods_stats.rb +0 -61
- data/pkg/steam-condenser-1.2.0/lib/steam/community/dods/dods_weapon.rb +0 -67
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_achievement.rb +0 -109
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_class.rb +0 -22
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_inventory.rb +0 -152
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_item.rb +0 -99
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_leaderboard.rb +0 -201
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_leaderboard_entry.rb +0 -43
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_stats.rb +0 -175
- data/pkg/steam-condenser-1.2.0/lib/steam/community/game_weapon.rb +0 -41
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/abstract_l4d_stats.rb +0 -173
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/abstract_l4d_weapon.rb +0 -56
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d2_map.rb +0 -90
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d2_stats.rb +0 -165
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d2_weapon.rb +0 -38
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d_explosive.rb +0 -34
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d_map.rb +0 -65
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d_stats.rb +0 -71
- data/pkg/steam-condenser-1.2.0/lib/steam/community/l4d/l4d_weapon.rb +0 -26
- data/pkg/steam-condenser-1.2.0/lib/steam/community/portal2/portal2_inventory.rb +0 -25
- data/pkg/steam-condenser-1.2.0/lib/steam/community/portal2/portal2_item.rb +0 -47
- data/pkg/steam-condenser-1.2.0/lib/steam/community/portal2/portal2_stats.rb +0 -32
- data/pkg/steam-condenser-1.2.0/lib/steam/community/steam_game.rb +0 -182
- data/pkg/steam-condenser-1.2.0/lib/steam/community/steam_group.rb +0 -135
- data/pkg/steam-condenser-1.2.0/lib/steam/community/steam_id.rb +0 -513
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_beta_inventory.rb +0 -22
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_class.rb +0 -92
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_class_factory.rb +0 -40
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_engineer.rb +0 -43
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_golden_wrench.rb +0 -70
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_inventory.rb +0 -25
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_item.rb +0 -47
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_medic.rb +0 -35
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_sniper.rb +0 -28
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_spy.rb +0 -41
- data/pkg/steam-condenser-1.2.0/lib/steam/community/tf2/tf2_stats.rb +0 -76
- data/pkg/steam-condenser-1.2.0/lib/steam/community/web_api.rb +0 -129
- data/pkg/steam-condenser-1.2.0/lib/steam/community/xml_data.rb +0 -17
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/a2m_get_servers_batch2_packet.rb +0 -59
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/a2s_info_packet.rb +0 -24
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/a2s_player_packet.rb +0 -31
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/a2s_rules_packet.rb +0 -32
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/a2s_serverquery_getchallenge_packet.rb +0 -25
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/c2m_checkmd5_packet.rb +0 -30
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/m2a_server_batch_packet.rb +0 -52
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/m2c_isvalidmd5_packet.rb +0 -34
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/m2s_requestrestart_packet.rb +0 -34
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_auth_request.rb +0 -28
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_auth_response.rb +0 -30
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_exec_request.rb +0 -28
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_exec_response.rb +0 -37
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_goldsrc_request.rb +0 -35
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_goldsrc_response.rb +0 -34
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_packet.rb +0 -57
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_packet_factory.rb +0 -43
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/rcon/rcon_terminator.rb +0 -29
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/request_with_challenge.rb +0 -19
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_info2_packet.rb +0 -62
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_info_base_packet.rb +0 -35
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_info_detailed_packet.rb +0 -61
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_logstring_packet.rb +0 -30
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_player_packet.rb +0 -44
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2a_rules_packet.rb +0 -48
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2c_challenge_packet.rb +0 -35
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/s2m_heartbeat2_packet.rb +0 -71
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/steam_packet.rb +0 -52
- data/pkg/steam-condenser-1.2.0/lib/steam/packets/steam_packet_factory.rb +0 -108
- data/pkg/steam-condenser-1.2.0/lib/steam/servers/game_server.rb +0 -392
- data/pkg/steam-condenser-1.2.0/lib/steam/servers/goldsrc_server.rb +0 -74
- data/pkg/steam-condenser-1.2.0/lib/steam/servers/master_server.rb +0 -182
- data/pkg/steam-condenser-1.2.0/lib/steam/servers/server.rb +0 -104
- data/pkg/steam-condenser-1.2.0/lib/steam/servers/source_server.rb +0 -98
- data/pkg/steam-condenser-1.2.0/lib/steam/sockets/goldsrc_socket.rb +0 -142
- data/pkg/steam-condenser-1.2.0/lib/steam/sockets/master_server_socket.rb +0 -30
- data/pkg/steam-condenser-1.2.0/lib/steam/sockets/rcon_socket.rb +0 -94
- data/pkg/steam-condenser-1.2.0/lib/steam/sockets/source_socket.rb +0 -78
- data/pkg/steam-condenser-1.2.0/lib/steam/sockets/steam_socket.rb +0 -86
- data/pkg/steam-condenser-1.2.0/lib/steam/steam_player.rb +0 -143
- data/pkg/steam-condenser-1.2.0/steam-condenser.gemspec +0 -25
- data/pkg/steam-condenser-1.2.0/test/core_ext/test_stringio.rb +0 -59
- data/pkg/steam-condenser-1.2.0/test/fixtures/invalid.xml +0 -2
- data/pkg/steam-condenser-1.2.0/test/fixtures/sonofthor.xml +0 -882
- data/pkg/steam-condenser-1.2.0/test/fixtures/status_goldsrc +0 -3
- data/pkg/steam-condenser-1.2.0/test/fixtures/status_source +0 -3
- data/pkg/steam-condenser-1.2.0/test/fixtures/valve-members.xml +0 -231
- data/pkg/steam-condenser-1.2.0/test/helper.rb +0 -45
- data/pkg/steam-condenser-1.2.0/test/steam/packets/test_steam_packet.rb +0 -37
- data/pkg/steam-condenser-1.2.0/test/steam/servers/test_game_server.rb +0 -296
- data/pkg/steam-condenser-1.2.0/test/steam/servers/test_goldsrc_server.rb +0 -59
- data/pkg/steam-condenser-1.2.0/test/steam/servers/test_master_server.rb +0 -131
- data/pkg/steam-condenser-1.2.0/test/steam/servers/test_server.rb +0 -72
- data/pkg/steam-condenser-1.2.0/test/steam/servers/test_source_server.rb +0 -126
- data/pkg/steam-condenser-1.2.0/test/steam/sockets/test_goldsrc_socket.rb +0 -127
- data/pkg/steam-condenser-1.2.0/test/steam/sockets/test_master_server_socket.rb +0 -42
- data/pkg/steam-condenser-1.2.0/test/steam/sockets/test_rcon_socket.rb +0 -109
- data/pkg/steam-condenser-1.2.0/test/steam/sockets/test_source_socket.rb +0 -77
- data/pkg/steam-condenser-1.2.0/test/steam/sockets/test_steam_socket.rb +0 -97
- data/test/steam/communtiy/test_steam_group.rb +0 -83
- data/test/steam/communtiy/test_steam_id.rb +0 -111
- data/test/steam/communtiy/test_web_api.rb +0 -98
@@ -0,0 +1,131 @@
|
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2012, Sebastian Staudt
|
5
|
+
|
6
|
+
require 'steam/community/cacheable'
|
7
|
+
|
8
|
+
# Provides item definitions and related data that specify the items of a game
|
9
|
+
#
|
10
|
+
# @author Sebastian Staudt
|
11
|
+
class GameItemSchema
|
12
|
+
|
13
|
+
include Cacheable
|
14
|
+
cacheable_with_ids [ :app_id, :language ]
|
15
|
+
|
16
|
+
# Returns the application ID of the game this item schema belongs to
|
17
|
+
#
|
18
|
+
# @return [Fixnum] The application ID of the game
|
19
|
+
attr_reader :app_id
|
20
|
+
|
21
|
+
# The attributes defined for this game's items
|
22
|
+
#
|
23
|
+
# @return [Hash<Symbol, Object>] This item schema's attributes
|
24
|
+
attr_reader :attributes
|
25
|
+
|
26
|
+
# The effects defined for this game's items
|
27
|
+
#
|
28
|
+
# @return [Hash<Symbol, Object>] This item schema's effects
|
29
|
+
attr_reader :effects
|
30
|
+
|
31
|
+
# The levels defined for this game's items
|
32
|
+
#
|
33
|
+
# @return [Hash<Symbol, Object>] This item schema's item levels
|
34
|
+
attr_reader :item_levels
|
35
|
+
|
36
|
+
# A mapping from the item name to the item's defindex
|
37
|
+
#
|
38
|
+
# @return [Hash<Symbol, Object>] The item name mapping
|
39
|
+
attr_reader :item_names
|
40
|
+
|
41
|
+
# The item sets defined for this game's items
|
42
|
+
#
|
43
|
+
# @return [Hash<Symbol, Object>] This item schema's item sets
|
44
|
+
attr_reader :item_sets
|
45
|
+
|
46
|
+
# The items defined for this game
|
47
|
+
#
|
48
|
+
# @return [Hash<Symbol, Object>] The items in this schema
|
49
|
+
attr_reader :items
|
50
|
+
|
51
|
+
# The language of this item schema
|
52
|
+
#
|
53
|
+
# @return [Symbol] The language of this item schema
|
54
|
+
attr_reader :language
|
55
|
+
|
56
|
+
# The item origins defined for this game's items
|
57
|
+
#
|
58
|
+
# @return [Array<String>] This item schema's origins
|
59
|
+
attr_reader :origins
|
60
|
+
|
61
|
+
# The item qualities defined for this game's items
|
62
|
+
#
|
63
|
+
# @return [Array<String>] This item schema's qualities
|
64
|
+
attr_reader :qualities
|
65
|
+
|
66
|
+
# Creates a new item schema for the game with the given application ID and
|
67
|
+
# with descriptions in the given language
|
68
|
+
#
|
69
|
+
# @param [Fixnum] app_id The application ID of the game
|
70
|
+
# @param [Symbol] language The language of description strings
|
71
|
+
# @macro cacheable
|
72
|
+
def initialize(app_id, language = nil)
|
73
|
+
@app_id = app_id
|
74
|
+
@language = language
|
75
|
+
end
|
76
|
+
|
77
|
+
# Updates the item definitions of this schema using the Steam Web API
|
78
|
+
def fetch
|
79
|
+
params = { :language => language }
|
80
|
+
data = WebApi.json!("IEconItems_#{app_id}", 'GetSchema', 1, params)
|
81
|
+
|
82
|
+
@attributes = {}
|
83
|
+
data[:attributes].each do |attribute|
|
84
|
+
@attributes[attribute[:defindex]] = attribute
|
85
|
+
@attributes[attribute[:name]] = attribute
|
86
|
+
end
|
87
|
+
|
88
|
+
@effects = {}
|
89
|
+
data[:attribute_controlled_attached_particles].each do |effect|
|
90
|
+
@effects[effect[:id]] = effect[:name]
|
91
|
+
end
|
92
|
+
|
93
|
+
@items = {}
|
94
|
+
@item_names = {}
|
95
|
+
data[:items].each do |item|
|
96
|
+
@items[item[:defindex]] = item
|
97
|
+
@item_names[item[:name]] = item[:defindex]
|
98
|
+
end
|
99
|
+
|
100
|
+
@item_levels = {}
|
101
|
+
data[:item_levels].each do |item_level_type|
|
102
|
+
@item_levels[item_level_type[:name]] = {}
|
103
|
+
item_level_type[:levels].each do |level|
|
104
|
+
@item_levels[item_level_type[:name]][level[:level]] = level[:name]
|
105
|
+
end
|
106
|
+
end if data.key? :item_levels
|
107
|
+
|
108
|
+
@item_sets = {}
|
109
|
+
data[:item_sets].each do |item_set|
|
110
|
+
@item_sets[item_set[:item_set]] = item_set
|
111
|
+
end
|
112
|
+
|
113
|
+
@origins = []
|
114
|
+
data[:originNames].each do |origin|
|
115
|
+
@origins[origin[:origin]] = origin[:name]
|
116
|
+
end
|
117
|
+
|
118
|
+
@qualities = []
|
119
|
+
data[:qualities].keys.each_with_index do |key, index|
|
120
|
+
@qualities[index] = data[:qualityNames][key] || key.to_s.capitalize
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Returns a short, human-readable string representation of this item schema
|
125
|
+
#
|
126
|
+
# @return [String] A string representation of this item schema
|
127
|
+
def inspect
|
128
|
+
"#<#{self.class}:#@app_id (#@language) - #{fetch_time || 'not fetched'}>"
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
@@ -109,7 +109,7 @@ class GameStats
|
|
109
109
|
|
110
110
|
@privacy_state = @xml_data['privacyState']
|
111
111
|
if public?
|
112
|
-
app_id = @xml_data['game']['gameLink'].match(/http
|
112
|
+
app_id = @xml_data['game']['gameLink'].match(/http:\/\/steamcommunity\.com\/+app\/+([1-9][0-9]*)/)[1].to_i
|
113
113
|
@game = SteamGame.new app_id, @xml_data['game']
|
114
114
|
@hours_played = @xml_data['stats']['hoursPlayed'] unless @xml_data['stats']['hoursPlayed'].nil?
|
115
115
|
end
|
@@ -28,7 +28,9 @@ class L4D2Stats < GameStats
|
|
28
28
|
# Creates a `L4D2Stats` object by calling the super constructor with the game
|
29
29
|
# name `'l4d2'`
|
30
30
|
#
|
31
|
-
# @param [String] steam_id The custom URL or 64bit Steam ID of the
|
31
|
+
# @param [String, Fixnum] steam_id The custom URL or 64bit Steam ID of the
|
32
|
+
# user
|
33
|
+
# @macro cacheable
|
32
34
|
def initialize(steam_id)
|
33
35
|
super steam_id, 'l4d2'
|
34
36
|
|
@@ -18,7 +18,9 @@ class L4DStats < GameStats
|
|
18
18
|
# Creates a `L4DStats` object by calling the super constructor
|
19
19
|
# with the game name `'l4d'`
|
20
20
|
#
|
21
|
-
# @param [String] steam_id The custom URL or 64bit Steam ID of the
|
21
|
+
# @param [String, Fixnum] steam_id The custom URL or 64bit Steam ID of the
|
22
|
+
# user
|
23
|
+
# @macro cacheable
|
22
24
|
def initialize(steam_id)
|
23
25
|
super steam_id, 'l4d'
|
24
26
|
end
|
@@ -11,6 +11,9 @@ require 'steam/community/portal2/portal2_item'
|
|
11
11
|
# @author Sebastian Staudt
|
12
12
|
class Portal2Inventory < GameInventory
|
13
13
|
|
14
|
+
# The Steam application ID of Portal 2
|
15
|
+
APP_ID = 620
|
16
|
+
|
14
17
|
# Creates a new inventory object for the given SteamID64 in Portal 2 (App ID
|
15
18
|
# 620)
|
16
19
|
#
|
@@ -18,7 +21,7 @@ class Portal2Inventory < GameInventory
|
|
18
21
|
# inventory for
|
19
22
|
# @macro cacheable
|
20
23
|
def initialize(steam_id64)
|
21
|
-
super
|
24
|
+
super APP_ID, steam_id64
|
22
25
|
end
|
23
26
|
|
24
27
|
# The class representing Portal 2 items
|
@@ -15,6 +15,12 @@ class Portal2Item
|
|
15
15
|
# The names of the bots available in Portal 2
|
16
16
|
BOTS = [ :pbody, :atlas ]
|
17
17
|
|
18
|
+
# Returns the slot where this item can be equipped in or `nil` if this item
|
19
|
+
# cannot be equipped
|
20
|
+
#
|
21
|
+
# @return [String, nil] The slot where this item can be equipped in
|
22
|
+
attr_reader :slot
|
23
|
+
|
18
24
|
# Creates a new instance of a Portal 2 item with the given data
|
19
25
|
#
|
20
26
|
# @param [Portal2Inventory] inventory The inventory this item is contained in
|
@@ -23,6 +29,8 @@ class Portal2Item
|
|
23
29
|
def initialize(inventory, item_data)
|
24
30
|
super
|
25
31
|
|
32
|
+
@slot = schema_data[:item_slot]
|
33
|
+
|
26
34
|
@equipped = {}
|
27
35
|
BOTS.each_index do |class_id|
|
28
36
|
@equipped[BOTS[class_id]] = (item_data[:inventory] & (1 << 16 + class_id) != 0)
|
@@ -80,6 +80,16 @@ class SteamGame
|
|
80
80
|
result[:up_to_date]
|
81
81
|
end
|
82
82
|
|
83
|
+
# Returns the overall number of players currently playing this game
|
84
|
+
#
|
85
|
+
# @return [Fixnum] The number of players playing this game
|
86
|
+
def player_count
|
87
|
+
params = { :appid => @app_id }
|
88
|
+
result = WebApi.json 'ISteamUserStats', 'GetNumberOfCurrentPlayers', 1, params
|
89
|
+
result = MultiJson.load(result, { :symbolize_keys => true})[:response]
|
90
|
+
result[:player_count]
|
91
|
+
end
|
92
|
+
|
83
93
|
# Returns whether this game has statistics available
|
84
94
|
#
|
85
95
|
# @return [Boolean] `true` if this game has stats
|
@@ -115,6 +125,7 @@ class SteamGame
|
|
115
125
|
#
|
116
126
|
# @return [String] The URL for the game logo
|
117
127
|
def logo_url
|
128
|
+
return nil if @logo_hash.nil?
|
118
129
|
"http://media.steampowered.com/steamcommunity/public/images/apps/#@app_id/#@logo_hash.jpg"
|
119
130
|
end
|
120
131
|
|
@@ -122,7 +133,8 @@ class SteamGame
|
|
122
133
|
#
|
123
134
|
# @return [String] The URL for the game logo thumbnail
|
124
135
|
def logo_thumbnail_url
|
125
|
-
|
136
|
+
return nil if @logo_hash.nil?
|
137
|
+
"http://media.steampowered.com/steamcommunity/public/images/apps/#@app_id/#{@logo_hash}_thumb.jpg"
|
126
138
|
end
|
127
139
|
|
128
140
|
# Returns the URL of this game's page in the Steam Store
|
@@ -162,7 +174,8 @@ class SteamGame
|
|
162
174
|
@app_id = app_id
|
163
175
|
|
164
176
|
if game_data.key? 'name'
|
165
|
-
|
177
|
+
hash = game_data['logo'].match /\/#{app_id}\/([0-9a-f]+).jpg/
|
178
|
+
@logo_hash = hash[1] unless hash.nil?
|
166
179
|
@name = game_data['name']
|
167
180
|
|
168
181
|
if game_data.key? 'globalStatsLink'
|
@@ -31,20 +31,6 @@ class SteamId
|
|
31
31
|
# @return [String] The custom URL of this Steam ID
|
32
32
|
attr_reader :custom_url
|
33
33
|
|
34
|
-
# Returns the favorite game of this user
|
35
|
-
#
|
36
|
-
# @deprecated The favorite game is no longer listed for new users
|
37
|
-
# @return [String] The favorite game of this user
|
38
|
-
attr_reader :favorite_game
|
39
|
-
|
40
|
-
# Returns the number of hours that this user played his/her favorite game in
|
41
|
-
# the last two weeks
|
42
|
-
#
|
43
|
-
# @deprecated The favorite game is no longer listed for new users
|
44
|
-
# @return [String] The number of hours the favorite game has been played
|
45
|
-
# recently
|
46
|
-
attr_reader :favorite_game_hours_played
|
47
|
-
|
48
34
|
# Returns the groups this user is a member of
|
49
35
|
#
|
50
36
|
# @return [Array<SteamGroup>] The groups this user is a member of
|
@@ -157,6 +143,21 @@ class SteamId
|
|
157
143
|
"STEAM_0:#{steam_id1}:#{steam_id2}"
|
158
144
|
end
|
159
145
|
|
146
|
+
# Resolves a vanity URL of a Steam Community profile to a 64bit numeric
|
147
|
+
# SteamID
|
148
|
+
#
|
149
|
+
# @param [String] vanity_url The vanity URL of a Steam Community profile
|
150
|
+
# @return [Fixnum] The 64bit numeric SteamID
|
151
|
+
def self.resolve_vanity_url(vanity_url)
|
152
|
+
params = { :vanityurl => vanity_url }
|
153
|
+
json = WebApi.json 'ISteamUser', 'ResolveVanityURL', 1, params
|
154
|
+
result = MultiJson.load(json, :symbolize_keys => true)[:response]
|
155
|
+
|
156
|
+
return nil if result[:success] != 1
|
157
|
+
|
158
|
+
result[:steamid].to_i
|
159
|
+
end
|
160
|
+
|
160
161
|
# Converts a SteamID as reported by game servers to a 64bit numeric SteamID
|
161
162
|
# as used by the Steam Community
|
162
163
|
#
|
@@ -168,13 +169,15 @@ class SteamId
|
|
168
169
|
def self.steam_id_to_community_id(steam_id)
|
169
170
|
if steam_id == 'STEAM_ID_LAN' || steam_id == 'BOT'
|
170
171
|
raise SteamCondenserError, "Cannot convert SteamID \"#{steam_id}\" to a community ID."
|
171
|
-
elsif steam_id
|
172
|
+
elsif steam_id =~ /^STEAM_[0-1]:[0-1]:[0-9]+$/
|
173
|
+
steam_id = steam_id[8..-1].split(':').map! { |s| s.to_i }
|
174
|
+
steam_id[0] + steam_id[1] * 2 + 76561197960265728
|
175
|
+
elsif steam_id =~ /\[U:[0-1]:[0-9]+\]/
|
176
|
+
steam_id = steam_id[3..-2].split(':').map! { |s| s.to_i }
|
177
|
+
steam_id[0] + steam_id[1] + 76561197960265727
|
178
|
+
else
|
172
179
|
raise SteamCondenserError, "SteamID \"#{steam_id}\" doesn't have the correct format."
|
173
180
|
end
|
174
|
-
|
175
|
-
steam_id = steam_id[6..-1].split(':').map!{|s| s.to_i}
|
176
|
-
|
177
|
-
steam_id[1] + steam_id[2] * 2 + 76561197960265728
|
178
181
|
end
|
179
182
|
|
180
183
|
class << self
|
@@ -205,7 +208,11 @@ class SteamId
|
|
205
208
|
if id.is_a? Numeric
|
206
209
|
@steam_id64 = id
|
207
210
|
else
|
208
|
-
|
211
|
+
if id =~ /^STEAM_[0-1]:[0-1]:[0-9]+$/ || id =~ /\[U:[0-1]:[0-9]+\]/
|
212
|
+
@steam_id64 = self.steam_id_to_community_id id
|
213
|
+
else
|
214
|
+
@custom_url = id.downcase
|
215
|
+
end
|
209
216
|
end
|
210
217
|
end
|
211
218
|
|
@@ -240,11 +247,9 @@ class SteamId
|
|
240
247
|
begin
|
241
248
|
profile = parse "#{base_url}?xml=1"
|
242
249
|
|
243
|
-
|
244
|
-
raise SteamCondenserError, profile['error']
|
245
|
-
end
|
250
|
+
raise SteamCondenserError, profile['error'] unless profile['error'].nil?
|
246
251
|
|
247
|
-
|
252
|
+
unless profile['privacyMessage'].nil?
|
248
253
|
raise SteamCondenserError, profile['privacyMessage']
|
249
254
|
end
|
250
255
|
|
@@ -261,14 +266,9 @@ class SteamId
|
|
261
266
|
@visibility_state = profile['visibilityState'].to_i
|
262
267
|
|
263
268
|
if public?
|
264
|
-
@custom_url = profile['customURL'].downcase
|
269
|
+
@custom_url = profile['customURL'].downcase rescue ''
|
265
270
|
@custom_url = nil if @custom_url.empty?
|
266
271
|
|
267
|
-
if profile.key? 'favoriteGame'
|
268
|
-
@favorite_game = profile['favoriteGame']['name']
|
269
|
-
@favorite_game_hours_played = profile['favoriteGame']['hoursPlayed2wk']
|
270
|
-
end
|
271
|
-
|
272
272
|
@head_line = CGI.unescapeHTML profile['headline'] || ''
|
273
273
|
@hours_played = profile['hoursPlayed2Wk'].to_f
|
274
274
|
@location = profile['location']
|
@@ -278,21 +278,21 @@ class SteamId
|
|
278
278
|
@summary = CGI.unescapeHTML profile['summary'] || ''
|
279
279
|
|
280
280
|
@most_played_games = {}
|
281
|
-
|
281
|
+
unless profile['mostPlayedGames'].to_s.strip.empty?
|
282
282
|
[profile['mostPlayedGames']['mostPlayedGame']].flatten.each do |most_played_game|
|
283
283
|
@most_played_games[most_played_game['gameName']] = most_played_game['hoursPlayed'].to_f
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
287
287
|
@groups = []
|
288
|
-
|
288
|
+
unless profile['groups'].to_s.strip.empty?
|
289
289
|
[profile['groups']['group']].flatten.each do |group|
|
290
290
|
@groups << SteamGroup.new(group['groupID64'].to_i, false)
|
291
291
|
end
|
292
292
|
end
|
293
293
|
|
294
294
|
@links = {}
|
295
|
-
|
295
|
+
unless profile['weblinks'].to_s.strip.empty?
|
296
296
|
[profile['weblinks']['weblink']].flatten.each do |link|
|
297
297
|
@links[CGI.unescapeHTML link['title']] = link['link']
|
298
298
|
end
|
@@ -330,17 +330,14 @@ class SteamId
|
|
330
330
|
@games = {}
|
331
331
|
@playtimes = {}
|
332
332
|
games_data = parse "#{base_url}/games?xml=1"
|
333
|
-
|
333
|
+
games_data['games']['game'].each do |game_data|
|
334
334
|
app_id = game_data['appID'].to_i
|
335
335
|
game = SteamGame.new app_id, game_data
|
336
336
|
@games[app_id] = game
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
if game_data.key? 'hoursOnRecord'
|
342
|
-
total = game_data['hoursOnRecord'].to_f
|
343
|
-
end
|
337
|
+
|
338
|
+
recent = game_data['hoursLast2Weeks'].to_f
|
339
|
+
total = (game_data['hoursOnRecord'] || '').delete(',').to_f
|
340
|
+
|
344
341
|
@playtimes[app_id] = [(recent * 60).to_i, (total * 60).to_i]
|
345
342
|
end
|
346
343
|
|
@@ -485,7 +482,7 @@ class SteamId
|
|
485
482
|
# game with the given ID exists
|
486
483
|
# @return [SteamGame] The game found with the given ID
|
487
484
|
def find_game(id)
|
488
|
-
if id.is_a?
|
485
|
+
if id.is_a? Numeric
|
489
486
|
game = games[id]
|
490
487
|
else
|
491
488
|
game = games.values.find do |game|
|
@@ -10,6 +10,9 @@ require 'steam/community/tf2/tf2_item'
|
|
10
10
|
# Fortress 2 beta
|
11
11
|
class TF2BetaInventory < GameInventory
|
12
12
|
|
13
|
+
# The Steam application ID of the Team Fortress 2 beta
|
14
|
+
APP_ID = 520
|
15
|
+
|
13
16
|
# Creates a new inventory object for the given SteamID64 in the Team Fortress
|
14
17
|
# 2 beta (App ID 520)
|
15
18
|
#
|
@@ -17,7 +20,7 @@ class TF2BetaInventory < GameInventory
|
|
17
20
|
# inventory for
|
18
21
|
# @macro cacheable
|
19
22
|
def initialize(steam_id64)
|
20
|
-
super
|
23
|
+
super APP_ID, steam_id64
|
21
24
|
end
|
22
25
|
|
23
26
|
@@item_class = TF2Item
|
@@ -11,6 +11,9 @@ require 'steam/community/tf2/tf2_item'
|
|
11
11
|
# @author Sebastian Staudt
|
12
12
|
class TF2Inventory < GameInventory
|
13
13
|
|
14
|
+
# The Steam application ID of Team Fortress 2
|
15
|
+
APP_ID = 440
|
16
|
+
|
14
17
|
# Creates a new inventory object for the given SteamID64 in Team Fortress 2
|
15
18
|
# (App ID 440)
|
16
19
|
#
|
@@ -18,7 +21,7 @@ class TF2Inventory < GameInventory
|
|
18
21
|
# inventory for
|
19
22
|
# @macro cacheable
|
20
23
|
def initialize(steam_id64)
|
21
|
-
super
|
24
|
+
super APP_ID, steam_id64
|
22
25
|
end
|
23
26
|
|
24
27
|
# The class representing Team Fortress 2 items
|