steam-condenser 1.0.2 → 1.1.0

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 (48) hide show
  1. data/README.md +2 -1
  2. data/Rakefile +10 -1
  3. data/lib/steam-condenser/version.rb +1 -1
  4. data/lib/steam/community/app_news.rb +0 -0
  5. data/lib/steam/community/game_leaderboard.rb +199 -0
  6. data/lib/steam/community/game_leaderboard_entry.rb +43 -0
  7. data/lib/steam/community/game_stats.rb +16 -0
  8. data/lib/steam/community/steam_game.rb +18 -0
  9. data/lib/steam/community/steam_group.rb +9 -4
  10. data/lib/steam/community/steam_id.rb +45 -41
  11. data/lib/steam/community/tf2/tf2_beta_inventory.rb +22 -0
  12. data/lib/steam/community/tf2/tf2_golden_wrench.rb +0 -0
  13. data/lib/steam/community/tf2/tf2_stats.rb +10 -4
  14. data/lib/steam/community/web_api.rb +0 -0
  15. data/lib/steam/servers/master_server.rb +2 -1
  16. data/lib/steam/servers/server.rb +1 -1
  17. data/lib/steam/sockets/rcon_socket.rb +0 -1
  18. data/lib/steam/sockets/steam_socket.rb +2 -1
  19. data/steam-condenser.gemspec +5 -4
  20. data/test/core_ext/test_stringio.rb +59 -0
  21. data/test/fixtures/invalid.xml +2 -0
  22. data/test/fixtures/sonofthor.xml +882 -0
  23. data/test/fixtures/status_goldsrc +3 -0
  24. data/test/fixtures/status_source +3 -0
  25. data/test/fixtures/valve-members.xml +231 -0
  26. data/test/helper.rb +37 -0
  27. data/test/steam/communtiy/test_steam_group.rb +83 -0
  28. data/test/steam/communtiy/test_steam_id.rb +85 -0
  29. data/test/steam/communtiy/test_web_api.rb +98 -0
  30. data/test/steam/servers/test_game_server.rb +308 -0
  31. data/test/steam/servers/test_goldsrc_server.rb +59 -0
  32. data/test/steam/servers/test_master_server.rb +131 -0
  33. data/test/steam/servers/test_server.rb +72 -0
  34. data/test/steam/servers/test_source_server.rb +140 -0
  35. data/test/steam/sockets/test_goldsrc_socket.rb +127 -0
  36. data/test/steam/sockets/test_master_server_socket.rb +41 -0
  37. data/test/steam/sockets/test_rcon_socket.rb +109 -0
  38. data/test/steam/sockets/test_source_socket.rb +77 -0
  39. data/test/steam/sockets/test_steam_socket.rb +97 -0
  40. metadata +94 -34
  41. data/Gemfile.lock +0 -22
  42. data/test/query_tests.rb +0 -70
  43. data/test/rcon_tests.rb +0 -78
  44. data/test/steam/communtiy/steam_community_test_suite.rb +0 -12
  45. data/test/steam/communtiy/steam_group_tests.rb +0 -44
  46. data/test/steam/communtiy/steam_id_tests.rb +0 -49
  47. data/test/steam_community_tests.rb +0 -45
  48. data/test/stringio_additions_tests.rb +0 -77
@@ -0,0 +1,3 @@
1
+ # name userid uniqueid frag time ping loss adr
2
+ # 1 "someone" 1 STEAM_0:0:123456 10 3:52 12 0 0
3
+ # 2 "somebody" 2 STEAM_0:0:123457 3 2:42 34 0 0
@@ -0,0 +1,3 @@
1
+ # userid name uniqueid score connected ping loss state
2
+ # 1 "someone" STEAM_0:0:123456 10 3:52 12 0 active
3
+ # 2 "somebody" STEAM_0:0:123457 3 2:42 34 0 active
@@ -0,0 +1,231 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <memberList>
3
+ <groupID64>103582791429521412</groupID64>
4
+ <memberCount>221</memberCount>
5
+ <totalPages>1</totalPages>
6
+ <currentPage>1</currentPage>
7
+ <startingMember>0</startingMember>
8
+ <members>
9
+ <steamID64>76561197960265740</steamID64>
10
+ <steamID64>76561197964770089</steamID64>
11
+ <steamID64>76561197967162108</steamID64>
12
+ <steamID64>76561197994632741</steamID64>
13
+ <steamID64>76561197970280218</steamID64>
14
+ <steamID64>76561197966899291</steamID64>
15
+ <steamID64>76561197980865448</steamID64>
16
+ <steamID64>76561197971161698</steamID64>
17
+ <steamID64>76561197960269040</steamID64>
18
+ <steamID64>76561197960563532</steamID64>
19
+ <steamID64>76561197971049296</steamID64>
20
+ <steamID64>76561197960265738</steamID64>
21
+ <steamID64>76561198014254115</steamID64>
22
+ <steamID64>76561197960402283</steamID64>
23
+ <steamID64>76561197978236369</steamID64>
24
+ <steamID64>76561197961301890</steamID64>
25
+ <steamID64>76561197985607672</steamID64>
26
+ <steamID64>76561197961036066</steamID64>
27
+ <steamID64>76561197971630295</steamID64>
28
+ <steamID64>76561198042665686</steamID64>
29
+ <steamID64>76561197977113234</steamID64>
30
+ <steamID64>76561197961626070</steamID64>
31
+ <steamID64>76561197968452293</steamID64>
32
+ <steamID64>76561197974593417</steamID64>
33
+ <steamID64>76561197987393094</steamID64>
34
+ <steamID64>76561197991751968</steamID64>
35
+ <steamID64>76561197975593810</steamID64>
36
+ <steamID64>76561197967144365</steamID64>
37
+ <steamID64>76561197970314454</steamID64>
38
+ <steamID64>76561197969321754</steamID64>
39
+ <steamID64>76561197970892150</steamID64>
40
+ <steamID64>76561197982261816</steamID64>
41
+ <steamID64>76561197960860649</steamID64>
42
+ <steamID64>76561197969400141</steamID64>
43
+ <steamID64>76561197984437106</steamID64>
44
+ <steamID64>76561197991390878</steamID64>
45
+ <steamID64>76561197970565175</steamID64>
46
+ <steamID64>76561197981291930</steamID64>
47
+ <steamID64>76561197961420203</steamID64>
48
+ <steamID64>76561197989577350</steamID64>
49
+ <steamID64>76561198000175595</steamID64>
50
+ <steamID64>76561197999000345</steamID64>
51
+ <steamID64>76561197972755855</steamID64>
52
+ <steamID64>76561197968575517</steamID64>
53
+ <steamID64>76561197960508417</steamID64>
54
+ <steamID64>76561197971951755</steamID64>
55
+ <steamID64>76561197960265749</steamID64>
56
+ <steamID64>76561197960265731</steamID64>
57
+ <steamID64>76561197968304490</steamID64>
58
+ <steamID64>76561197960423941</steamID64>
59
+ <steamID64>76561197973185198</steamID64>
60
+ <steamID64>76561197974807412</steamID64>
61
+ <steamID64>76561197971292977</steamID64>
62
+ <steamID64>76561197969720282</steamID64>
63
+ <steamID64>76561197968848473</steamID64>
64
+ <steamID64>76561197978206069</steamID64>
65
+ <steamID64>76561197965461135</steamID64>
66
+ <steamID64>76561197960265838</steamID64>
67
+ <steamID64>76561197970543183</steamID64>
68
+ <steamID64>76561197993060890</steamID64>
69
+ <steamID64>76561197968152886</steamID64>
70
+ <steamID64>76561197978266558</steamID64>
71
+ <steamID64>76561197960287930</steamID64>
72
+ <steamID64>76561197984751122</steamID64>
73
+ <steamID64>76561197980744144</steamID64>
74
+ <steamID64>76561197983311154</steamID64>
75
+ <steamID64>76561197960265743</steamID64>
76
+ <steamID64>76561197967377359</steamID64>
77
+ <steamID64>76561197985627266</steamID64>
78
+ <steamID64>76561197960265730</steamID64>
79
+ <steamID64>76561197960265733</steamID64>
80
+ <steamID64>76561197975724041</steamID64>
81
+ <steamID64>76561197992219796</steamID64>
82
+ <steamID64>76561197960265747</steamID64>
83
+ <steamID64>76561197960280251</steamID64>
84
+ <steamID64>76561197961314438</steamID64>
85
+ <steamID64>76561197962205142</steamID64>
86
+ <steamID64>76561197962833771</steamID64>
87
+ <steamID64>76561197962844216</steamID64>
88
+ <steamID64>76561197963997393</steamID64>
89
+ <steamID64>76561197964279229</steamID64>
90
+ <steamID64>76561197962313932</steamID64>
91
+ <steamID64>76561197975029215</steamID64>
92
+ <steamID64>76561197968282875</steamID64>
93
+ <steamID64>76561197967990561</steamID64>
94
+ <steamID64>76561197960549564</steamID64>
95
+ <steamID64>76561197972196250</steamID64>
96
+ <steamID64>76561197992467988</steamID64>
97
+ <steamID64>76561197967713982</steamID64>
98
+ <steamID64>76561197985454791</steamID64>
99
+ <steamID64>76561197962783665</steamID64>
100
+ <steamID64>76561197968343660</steamID64>
101
+ <steamID64>76561197968662512</steamID64>
102
+ <steamID64>76561197969262523</steamID64>
103
+ <steamID64>76561197969357684</steamID64>
104
+ <steamID64>76561197970195533</steamID64>
105
+ <steamID64>76561197970282885</steamID64>
106
+ <steamID64>76561197970285523</steamID64>
107
+ <steamID64>76561197970404169</steamID64>
108
+ <steamID64>76561197970533489</steamID64>
109
+ <steamID64>76561197970569650</steamID64>
110
+ <steamID64>76561197970634249</steamID64>
111
+ <steamID64>76561197970893024</steamID64>
112
+ <steamID64>76561197970968871</steamID64>
113
+ <steamID64>76561197971596380</steamID64>
114
+ <steamID64>76561197972291076</steamID64>
115
+ <steamID64>76561197972563372</steamID64>
116
+ <steamID64>76561197976027800</steamID64>
117
+ <steamID64>76561197977035150</steamID64>
118
+ <steamID64>76561197977741299</steamID64>
119
+ <steamID64>76561197977961973</steamID64>
120
+ <steamID64>76561197978257665</steamID64>
121
+ <steamID64>76561197979082126</steamID64>
122
+ <steamID64>76561197979187556</steamID64>
123
+ <steamID64>76561197980632230</steamID64>
124
+ <steamID64>76561197982227246</steamID64>
125
+ <steamID64>76561197982240193</steamID64>
126
+ <steamID64>76561197982460133</steamID64>
127
+ <steamID64>76561197983084285</steamID64>
128
+ <steamID64>76561197983819387</steamID64>
129
+ <steamID64>76561197985130967</steamID64>
130
+ <steamID64>76561197985412037</steamID64>
131
+ <steamID64>76561197985590840</steamID64>
132
+ <steamID64>76561197986943540</steamID64>
133
+ <steamID64>76561197988042654</steamID64>
134
+ <steamID64>76561197988200160</steamID64>
135
+ <steamID64>76561197991157076</steamID64>
136
+ <steamID64>76561197991937967</steamID64>
137
+ <steamID64>76561197992593548</steamID64>
138
+ <steamID64>76561197997579159</steamID64>
139
+ <steamID64>76561198002151236</steamID64>
140
+ <steamID64>76561198002212024</steamID64>
141
+ <steamID64>76561198002402082</steamID64>
142
+ <steamID64>76561197960435530</steamID64>
143
+ <steamID64>76561197969363440</steamID64>
144
+ <steamID64>76561197960789988</steamID64>
145
+ <steamID64>76561197965686610</steamID64>
146
+ <steamID64>76561197984981409</steamID64>
147
+ <steamID64>76561197975914763</steamID64>
148
+ <steamID64>76561197963156385</steamID64>
149
+ <steamID64>76561198007622651</steamID64>
150
+ <steamID64>76561197969266938</steamID64>
151
+ <steamID64>76561197968459473</steamID64>
152
+ <steamID64>76561198008486962</steamID64>
153
+ <steamID64>76561198010062752</steamID64>
154
+ <steamID64>76561197971241861</steamID64>
155
+ <steamID64>76561198032762862</steamID64>
156
+ <steamID64>76561198007696304</steamID64>
157
+ <steamID64>76561197997296694</steamID64>
158
+ <steamID64>76561197963119114</steamID64>
159
+ <steamID64>76561197974091903</steamID64>
160
+ <steamID64>76561198010168695</steamID64>
161
+ <steamID64>76561198015999740</steamID64>
162
+ <steamID64>76561198027391269</steamID64>
163
+ <steamID64>76561197969518075</steamID64>
164
+ <steamID64>76561198032155554</steamID64>
165
+ <steamID64>76561198028573551</steamID64>
166
+ <steamID64>76561198003204775</steamID64>
167
+ <steamID64>76561197960277670</steamID64>
168
+ <steamID64>76561198032776328</steamID64>
169
+ <steamID64>76561198007695232</steamID64>
170
+ <steamID64>76561197960434622</steamID64>
171
+ <steamID64>76561198004986211</steamID64>
172
+ <steamID64>76561197995557785</steamID64>
173
+ <steamID64>76561197969765131</steamID64>
174
+ <steamID64>76561197972903621</steamID64>
175
+ <steamID64>76561197967652039</steamID64>
176
+ <steamID64>76561198032822778</steamID64>
177
+ <steamID64>76561198005121830</steamID64>
178
+ <steamID64>76561198000239560</steamID64>
179
+ <steamID64>76561197961218948</steamID64>
180
+ <steamID64>76561197984750189</steamID64>
181
+ <steamID64>76561197963123419</steamID64>
182
+ <steamID64>76561198021953586</steamID64>
183
+ <steamID64>76561197980258575</steamID64>
184
+ <steamID64>76561198027226081</steamID64>
185
+ <steamID64>76561198024119209</steamID64>
186
+ <steamID64>76561198045157117</steamID64>
187
+ <steamID64>76561198005731671</steamID64>
188
+ <steamID64>76561197970572119</steamID64>
189
+ <steamID64>76561198009095613</steamID64>
190
+ <steamID64>76561197970530062</steamID64>
191
+ <steamID64>76561198007622817</steamID64>
192
+ <steamID64>76561197960649750</steamID64>
193
+ <steamID64>76561197965467401</steamID64>
194
+ <steamID64>76561197970761369</steamID64>
195
+ <steamID64>76561197971400048</steamID64>
196
+ <steamID64>76561197974050669</steamID64>
197
+ <steamID64>76561197975458088</steamID64>
198
+ <steamID64>76561197978854252</steamID64>
199
+ <steamID64>76561197987262750</steamID64>
200
+ <steamID64>76561197989808853</steamID64>
201
+ <steamID64>76561197993832904</steamID64>
202
+ <steamID64>76561198001549544</steamID64>
203
+ <steamID64>76561198007657496</steamID64>
204
+ <steamID64>76561198012711712</steamID64>
205
+ <steamID64>76561198016352617</steamID64>
206
+ <steamID64>76561198024119021</steamID64>
207
+ <steamID64>76561198024119077</steamID64>
208
+ <steamID64>76561198024119145</steamID64>
209
+ <steamID64>76561198024119167</steamID64>
210
+ <steamID64>76561198024119233</steamID64>
211
+ <steamID64>76561198024119271</steamID64>
212
+ <steamID64>76561198024119297</steamID64>
213
+ <steamID64>76561198024149372</steamID64>
214
+ <steamID64>76561198024149438</steamID64>
215
+ <steamID64>76561198024402255</steamID64>
216
+ <steamID64>76561198032490515</steamID64>
217
+ <steamID64>76561198042300915</steamID64>
218
+ <steamID64>76561198047099472</steamID64>
219
+ <steamID64>76561198049584723</steamID64>
220
+ <steamID64>76561197992637080</steamID64>
221
+ <steamID64>76561197960389850</steamID64>
222
+ <steamID64>76561198005615861</steamID64>
223
+ <steamID64>76561197999062908</steamID64>
224
+ <steamID64>76561198003340507</steamID64>
225
+ <steamID64>76561198040900440</steamID64>
226
+ <steamID64>76561198050715070</steamID64>
227
+ <steamID64>76561198024187698</steamID64>
228
+ <steamID64>76561197997728531</steamID64>
229
+ <steamID64>76561197970323416</steamID64>
230
+ </members>
231
+ </memberList>
data/test/helper.rb ADDED
@@ -0,0 +1,37 @@
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) 2011, Sebastian Staudt
5
+
6
+ require 'test/unit'
7
+
8
+ require 'rubygems'
9
+
10
+ require 'mocha'
11
+ require 'shoulda-context'
12
+
13
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
14
+ $LOAD_PATH.unshift File.dirname(__FILE__)
15
+
16
+ # Extends TestCase functionality
17
+ class Test::Unit::TestCase
18
+
19
+ # Provides a negative assertion that's easier on the eyes
20
+ #
21
+ # The assertion fails, if the given value is `true`.
22
+ #
23
+ # @param [true, false] boolean The value that should be `false`
24
+ # @param [String] message The message that should be displayed
25
+ def assert_not(boolean, message = '')
26
+ assert !boolean, message
27
+ end
28
+
29
+ # Reads a file with fixtures from `./test/`
30
+ #
31
+ # @param [String] name The name of the fixtures file
32
+ # @return [String] The contents of the file
33
+ def fixture(name)
34
+ File.read File.join(File.dirname(__FILE__), 'fixtures', name)
35
+ end
36
+
37
+ end
@@ -0,0 +1,83 @@
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) 2011, Sebastian Staudt
5
+
6
+ require 'helper'
7
+ require 'steam/community/steam_group'
8
+
9
+ class TestSteamGroup < Test::Unit::TestCase
10
+
11
+ context 'A Steam group' do
12
+
13
+ should 'be correctly cached' do
14
+ assert_not SteamGroup.cached? 103582791429521412
15
+
16
+ group = SteamGroup.new 103582791429521412, false
17
+
18
+ assert group.cache
19
+ assert SteamGroup.cached? 103582791429521412
20
+ end
21
+
22
+ should 'be correctly cached with its custom URL' do
23
+ assert_not SteamGroup.cached? 'valve'
24
+
25
+ group = SteamGroup.new 'valve', false
26
+
27
+ assert group.cache
28
+ assert SteamGroup.cached? 'valve'
29
+ end
30
+
31
+ should 'be able to fetch its members' do
32
+ url = mock :read => fixture('valve-members.xml')
33
+ SteamGroup.any_instance.expects(:open).with('http://steamcommunity.com/groups/valve/memberslistxml?p=1', { :proxy => true }).returns url
34
+
35
+ group = SteamGroup.new 'valve'
36
+ members = group.members
37
+
38
+ assert_equal 221, group.member_count
39
+ assert_equal 76561197960265740, members.first.steam_id64
40
+ assert_not members.first.fetched?
41
+ assert_equal 76561197970323416, members.last.steam_id64
42
+ assert group.fetched?
43
+ end
44
+
45
+ should 'be found by the group ID' do
46
+ group = SteamGroup.new 103582791429521412, false
47
+
48
+ assert_equal 103582791429521412, group.group_id64
49
+ assert_equal 'http://steamcommunity.com/gid/103582791429521412', group.base_url
50
+ end
51
+
52
+ should 'be found by the group\'s custom URL' do
53
+ group = SteamGroup.new 'valve', false
54
+
55
+ assert_equal 'valve', group.custom_url
56
+ assert_equal 'http://steamcommunity.com/groups/valve', group.base_url
57
+ end
58
+
59
+ should 'raise an exception when parsing invalid XML' do
60
+ error = assert_raises SteamCondenserError do
61
+ url = mock :read => fixture('invalid.xml')
62
+ SteamGroup.any_instance.expects(:open).with('http://steamcommunity.com/groups/valve/memberslistxml?p=1', { :proxy => true }).returns url
63
+
64
+ SteamGroup.new 'valve'
65
+ end
66
+ assert_equal 'XML data could not be parsed.', error.message
67
+ end
68
+
69
+ should 'be able to parse just the member count' do
70
+ url = mock :read => fixture('valve-members.xml')
71
+ SteamGroup.any_instance.expects(:open).with('http://steamcommunity.com/groups/valve/memberslistxml', { :proxy => true }).returns url
72
+
73
+ group = SteamGroup.new 'valve', false
74
+ assert_equal 221, group.member_count
75
+ end
76
+
77
+ teardown do
78
+ SteamGroup.clear_cache
79
+ end
80
+
81
+ end
82
+
83
+ end
@@ -0,0 +1,85 @@
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) 2011, Sebastian Staudt
5
+
6
+ require 'helper'
7
+ require 'steam/community/steam_id'
8
+
9
+ class TestSteamId < Test::Unit::TestCase
10
+
11
+ context 'The SteamId class' do
12
+
13
+ should 'provide a conversion between 64bit Steam IDs and STEAM_IDs' do
14
+ steam_id = SteamId.convert_community_id_to_steam_id 76561197960290418
15
+ assert_equal 'STEAM_0:0:12345', steam_id
16
+ end
17
+
18
+ should 'provide a conversion between STEAM_IDs and 64bit Steam IDs' do
19
+ steam_id64 = SteamId.convert_steam_id_to_community_id 'STEAM_0:0:12345'
20
+ assert_equal 76561197960290418, steam_id64
21
+ end
22
+
23
+ end
24
+
25
+ context 'A Steam ID' do
26
+
27
+ should 'be correctly cached' do
28
+ assert_not SteamId.cached? 76561197983311154
29
+
30
+ steam_id = SteamId.new 76561197983311154, false
31
+
32
+ assert steam_id.cache
33
+ assert SteamId.cached? 76561197983311154
34
+ end
35
+
36
+ should 'be correctly cached with its custom URL' do
37
+ assert_not SteamId.cached? 'Son_of_Thor'
38
+
39
+ steam_id = SteamId.new 'Son_of_Thor', false
40
+
41
+ assert steam_id.cache
42
+ assert SteamId.cached? 'son_of_Thor'
43
+ end
44
+
45
+ should 'be able to fetch its data' do
46
+ url = mock :read => fixture('sonofthor.xml')
47
+ SteamId.any_instance.expects(:open).with('http://steamcommunity.com/id/son_of_thor?xml=1', { :proxy => true }).returns url
48
+
49
+ steam_id = SteamId.new 'Son_of_Thor'
50
+
51
+ assert_equal 76561197983311154, steam_id.steam_id64
52
+ assert steam_id.fetched?
53
+ end
54
+
55
+ should 'be found by the 64bit SteamID' do
56
+ steam_id = SteamId.new 76561197983311154, false
57
+
58
+ assert_equal 76561197983311154, steam_id.steam_id64
59
+ assert_equal 'http://steamcommunity.com/profiles/76561197983311154', steam_id.base_url
60
+ end
61
+
62
+ should 'be found by the SteamID\'s custom URL' do
63
+ steam_id = SteamId.new 'Son_of_Thor', false
64
+
65
+ assert_equal 'son_of_thor', steam_id.custom_url
66
+ assert_equal 'http://steamcommunity.com/id/son_of_thor', steam_id.base_url
67
+ end
68
+
69
+ should 'raise an exception when parsing invalid XML' do
70
+ error = assert_raises SteamCondenserError do
71
+ url = mock :read => fixture('invalid.xml')
72
+ SteamId.any_instance.expects(:open).with('http://steamcommunity.com/id/son_of_thor?xml=1', { :proxy => true }).returns url
73
+
74
+ SteamId.new 'Son_of_Thor'
75
+ end
76
+ assert_equal 'XML data could not be parsed.', error.message
77
+ end
78
+
79
+ teardown do
80
+ SteamId.clear_cache
81
+ end
82
+
83
+ end
84
+
85
+ end