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.
- data/README.md +2 -1
- data/Rakefile +10 -1
- data/lib/steam-condenser/version.rb +1 -1
- data/lib/steam/community/app_news.rb +0 -0
- data/lib/steam/community/game_leaderboard.rb +199 -0
- data/lib/steam/community/game_leaderboard_entry.rb +43 -0
- data/lib/steam/community/game_stats.rb +16 -0
- data/lib/steam/community/steam_game.rb +18 -0
- data/lib/steam/community/steam_group.rb +9 -4
- data/lib/steam/community/steam_id.rb +45 -41
- data/lib/steam/community/tf2/tf2_beta_inventory.rb +22 -0
- data/lib/steam/community/tf2/tf2_golden_wrench.rb +0 -0
- data/lib/steam/community/tf2/tf2_stats.rb +10 -4
- data/lib/steam/community/web_api.rb +0 -0
- data/lib/steam/servers/master_server.rb +2 -1
- data/lib/steam/servers/server.rb +1 -1
- data/lib/steam/sockets/rcon_socket.rb +0 -1
- data/lib/steam/sockets/steam_socket.rb +2 -1
- data/steam-condenser.gemspec +5 -4
- data/test/core_ext/test_stringio.rb +59 -0
- data/test/fixtures/invalid.xml +2 -0
- data/test/fixtures/sonofthor.xml +882 -0
- data/test/fixtures/status_goldsrc +3 -0
- data/test/fixtures/status_source +3 -0
- data/test/fixtures/valve-members.xml +231 -0
- data/test/helper.rb +37 -0
- data/test/steam/communtiy/test_steam_group.rb +83 -0
- data/test/steam/communtiy/test_steam_id.rb +85 -0
- data/test/steam/communtiy/test_web_api.rb +98 -0
- data/test/steam/servers/test_game_server.rb +308 -0
- data/test/steam/servers/test_goldsrc_server.rb +59 -0
- data/test/steam/servers/test_master_server.rb +131 -0
- data/test/steam/servers/test_server.rb +72 -0
- data/test/steam/servers/test_source_server.rb +140 -0
- data/test/steam/sockets/test_goldsrc_socket.rb +127 -0
- data/test/steam/sockets/test_master_server_socket.rb +41 -0
- data/test/steam/sockets/test_rcon_socket.rb +109 -0
- data/test/steam/sockets/test_source_socket.rb +77 -0
- data/test/steam/sockets/test_steam_socket.rb +97 -0
- metadata +94 -34
- data/Gemfile.lock +0 -22
- data/test/query_tests.rb +0 -70
- data/test/rcon_tests.rb +0 -78
- data/test/steam/communtiy/steam_community_test_suite.rb +0 -12
- data/test/steam/communtiy/steam_group_tests.rb +0 -44
- data/test/steam/communtiy/steam_id_tests.rb +0 -49
- data/test/steam_community_tests.rb +0 -45
- data/test/stringio_additions_tests.rb +0 -77
data/Gemfile.lock
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
steam-condenser (1.0.0)
|
5
|
-
bzip2-ruby (~> 0.2.7)
|
6
|
-
multi_json (~> 1.0.3)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
bzip2-ruby (0.2.7)
|
12
|
-
multi_json (1.0.3)
|
13
|
-
rake (0.9.2)
|
14
|
-
yard (0.7.2)
|
15
|
-
|
16
|
-
PLATFORMS
|
17
|
-
ruby
|
18
|
-
|
19
|
-
DEPENDENCIES
|
20
|
-
rake (~> 0.9.2)
|
21
|
-
steam-condenser!
|
22
|
-
yard (~> 0.7.2)
|
data/test/query_tests.rb
DELETED
@@ -1,70 +0,0 @@
|
|
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) 2008-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
require 'ipaddr'
|
7
|
-
require 'test/unit'
|
8
|
-
|
9
|
-
$:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
10
|
-
|
11
|
-
require 'errors/timeout_error'
|
12
|
-
require 'steam/servers/goldsrc_server'
|
13
|
-
require 'steam/servers/master_server'
|
14
|
-
require 'steam/servers/source_server'
|
15
|
-
|
16
|
-
class QueryTests < Test::Unit::TestCase
|
17
|
-
|
18
|
-
# This test tries to initialize an invalid GoldSrc server
|
19
|
-
def test_invalid_goldsrc_server
|
20
|
-
assert_raise SteamCondenser::TimeoutError do
|
21
|
-
invalid_server = GoldSrcServer.new IPAddr.new('1.0.0.0')
|
22
|
-
invalid_server.ping
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# This test tries to initialize an invalid Source server
|
27
|
-
def test_invalid_source_server
|
28
|
-
assert_raise SteamCondenser::TimeoutError do
|
29
|
-
invalid_server = SourceServer.new IPAddr.new('1.0.0.0')
|
30
|
-
invalid_server.ping
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# This test gets a random GoldSrc server from the master server and does a
|
35
|
-
# full query on it
|
36
|
-
def test_random_goldsrc_server
|
37
|
-
assert_nothing_raised do
|
38
|
-
master_server = MasterServer.new(*MasterServer::GOLDSRC_MASTER_SERVER)
|
39
|
-
servers = master_server.servers MasterServer::REGION_ALL, '\type\d\empty\1\full\1\gamedir\valve'
|
40
|
-
|
41
|
-
assert !servers.empty?, 'Got no servers from master server.'
|
42
|
-
|
43
|
-
server = GoldSrcServer.new(*servers[rand(servers.length)])
|
44
|
-
server.init
|
45
|
-
server.update_players
|
46
|
-
server.update_rules
|
47
|
-
|
48
|
-
print server.to_s
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# This test gets a random Source server from the master server and does a
|
53
|
-
# full query on it
|
54
|
-
def test_random_source_server
|
55
|
-
assert_nothing_raised do
|
56
|
-
master_server = MasterServer.new(*MasterServer::SOURCE_MASTER_SERVER)
|
57
|
-
servers = master_server.servers MasterServer::REGION_ALL, '\type\d\empty\1\full\1\gamedir\tf'
|
58
|
-
|
59
|
-
assert !servers.empty?, 'Got no servers from master server.'
|
60
|
-
|
61
|
-
server = SourceServer.new(*servers[rand(servers.length)])
|
62
|
-
server.init
|
63
|
-
server.update_players
|
64
|
-
server.update_rules
|
65
|
-
|
66
|
-
print server.to_s
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
data/test/rcon_tests.rb
DELETED
@@ -1,78 +0,0 @@
|
|
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) 2008-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
require 'ipaddr'
|
7
|
-
require 'test/unit'
|
8
|
-
|
9
|
-
$:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
10
|
-
|
11
|
-
require 'steam/servers/goldsrc_server'
|
12
|
-
require 'steam/servers/source_server'
|
13
|
-
|
14
|
-
class RCONTests < Test::Unit::TestCase
|
15
|
-
|
16
|
-
# This test tries to run the "status" command over RCON on a GoldSrc server
|
17
|
-
def test_long_rcon_goldsrc_server
|
18
|
-
assert_nothing_raised do
|
19
|
-
server = GoldSrcServer.new IPAddr.new('127.0.0.1')
|
20
|
-
server.rcon_auth 'test'
|
21
|
-
rcon_reply = server.rcon_exec 'cvarlist'
|
22
|
-
print "#{rcon_reply}\n"
|
23
|
-
|
24
|
-
assert(
|
25
|
-
rcon_reply.include?('CvarList ? for syntax'),
|
26
|
-
'Did not receive complete cvarlist.')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# This test tries to run the "status" command over RCON on a Source server
|
31
|
-
def test_long_rcon_source_server
|
32
|
-
assert_nothing_raised do
|
33
|
-
server = SourceServer.new IPAddr.new('127.0.0.1')
|
34
|
-
if server.rcon_auth 'test'
|
35
|
-
rcon_reply = server.rcon_exec 'cvarlist'
|
36
|
-
print "#{rcon_reply}\n"
|
37
|
-
end
|
38
|
-
|
39
|
-
assert(
|
40
|
-
rcon_reply.include?('total convars/concommands'),
|
41
|
-
'Did not receive complete cvarlist.')
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# This test tries to run the "status" command over RCON on a GoldSrc server
|
46
|
-
def test_short_rcon_goldsrc_server
|
47
|
-
assert_nothing_raised do
|
48
|
-
server = GoldSrcServer.new IPAddr.new('127.0.0.1')
|
49
|
-
server.rcon_auth 'test'
|
50
|
-
rcon_reply = server.rcon_exec 'version'
|
51
|
-
print "#{rcon_reply}\n"
|
52
|
-
|
53
|
-
assert(
|
54
|
-
rcon_reply.include?('Protocol version') &&
|
55
|
-
rcon_reply.include?('Exe version') &&
|
56
|
-
rcon_reply.include?('Exe build'),
|
57
|
-
'Did not receive correct version response.');
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# This test tries to run the "status" command over RCON on a Source server
|
62
|
-
def test_short_rcon_source_server
|
63
|
-
assert_nothing_raised do
|
64
|
-
server = SourceServer.new IPAddr.new('127.0.0.1')
|
65
|
-
if server.rcon_auth 'test'
|
66
|
-
rcon_reply = server.rcon_exec 'version'
|
67
|
-
print "#{rcon_reply}\n"
|
68
|
-
end
|
69
|
-
|
70
|
-
assert(
|
71
|
-
rcon_reply.include?('Protocol version') &&
|
72
|
-
rcon_reply.include?('Exe version') &&
|
73
|
-
rcon_reply.include?('Exe build'),
|
74
|
-
'Did not receive correct version response.');
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
@@ -1,12 +0,0 @@
|
|
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) 2009-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
require 'test/unit'
|
7
|
-
|
8
|
-
suite_dir = File.dirname(__FILE__)
|
9
|
-
$LOAD_PATH.unshift(suite_dir) unless $LOAD_PATH.include?(suite_dir)
|
10
|
-
|
11
|
-
require 'steam_group_tests'
|
12
|
-
require 'steam_id_tests'
|
@@ -1,44 +0,0 @@
|
|
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) 2009-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
$:.push File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
|
7
|
-
|
8
|
-
require 'test/unit'
|
9
|
-
|
10
|
-
require 'steam/community/steam_group'
|
11
|
-
|
12
|
-
class SteamGroupTests < Test::Unit::TestCase
|
13
|
-
|
14
|
-
def test_bypass_cache
|
15
|
-
SteamGroup.clear_cache
|
16
|
-
group = SteamGroup.new('valve')
|
17
|
-
fetch_time = group.fetch_time
|
18
|
-
sleep 1
|
19
|
-
group = SteamGroup.new('valve', true, true)
|
20
|
-
assert_operator(fetch_time, :<, group.fetch_time)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_cache
|
24
|
-
SteamGroup.clear_cache
|
25
|
-
group = SteamGroup.new('valve')
|
26
|
-
fetch_time = group.fetch_time
|
27
|
-
assert_equal(true, SteamGroup.cached?(103582791429521412))
|
28
|
-
assert_equal(true, SteamGroup.cached?('valve'))
|
29
|
-
sleep 1
|
30
|
-
group = SteamGroup.new('valve')
|
31
|
-
assert_equal(fetch_time, group.fetch_time)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_case_insensitivity
|
35
|
-
SteamGroup.clear_cache
|
36
|
-
group = SteamGroup.new('valve', false)
|
37
|
-
group2 = SteamGroup.new('Valve', false)
|
38
|
-
group3 = SteamGroup.new('VALVE', false)
|
39
|
-
assert_equal(true, SteamGroup.cached?('valve'))
|
40
|
-
assert_equal(group, group2)
|
41
|
-
assert_equal(group, group3)
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
@@ -1,49 +0,0 @@
|
|
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) 2009-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
$:.push File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
|
7
|
-
|
8
|
-
require 'test/unit'
|
9
|
-
|
10
|
-
require 'steam/community/steam_id'
|
11
|
-
|
12
|
-
class SteamIdTests < Test::Unit::TestCase
|
13
|
-
|
14
|
-
def test_bypass_cache
|
15
|
-
SteamId.clear_cache
|
16
|
-
steam_id = SteamId.new('koraktor')
|
17
|
-
fetch_time = steam_id.fetch_time
|
18
|
-
sleep 1
|
19
|
-
steam_id = SteamId.new('koraktor', true, true)
|
20
|
-
assert_operator(fetch_time, :<, steam_id.fetch_time)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_cache
|
24
|
-
SteamId.clear_cache
|
25
|
-
steam_id = SteamId.new('koraktor')
|
26
|
-
fetch_time = steam_id.fetch_time
|
27
|
-
assert_equal(true, SteamId.cached?(76561197961384956))
|
28
|
-
assert_equal(true, SteamId.cached?('koraktor'))
|
29
|
-
sleep 1
|
30
|
-
steam_id = SteamId.new('koraktor')
|
31
|
-
assert_equal(fetch_time, steam_id.fetch_time)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_case_insensitivity
|
35
|
-
SteamId.clear_cache
|
36
|
-
steam_id = SteamId.new('koraktor', false)
|
37
|
-
steam_id2 = SteamId.new('Koraktor', false)
|
38
|
-
steam_id3 = SteamId.new('KORAKTOR', false)
|
39
|
-
assert_equal(true, SteamId.cached?('koraktor'))
|
40
|
-
assert_equal(steam_id, steam_id2)
|
41
|
-
assert_equal(steam_id, steam_id3)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_convert_steam_id_to_community_id
|
45
|
-
steam_id64 = SteamId.convert_steam_id_to_community_id('STEAM_0:0:12345')
|
46
|
-
assert_equal(76561197960290418, steam_id64)
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
@@ -1,45 +0,0 @@
|
|
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) 2008-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
require 'test/unit'
|
7
|
-
|
8
|
-
$:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
9
|
-
|
10
|
-
require 'steam/community/steam_id'
|
11
|
-
|
12
|
-
class SteamCommunityTests < Test::Unit::TestCase
|
13
|
-
|
14
|
-
def test_group_by_custom_url
|
15
|
-
group = SteamGroup.new('valve')
|
16
|
-
p group.member_count
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_group_by_groupid_64
|
20
|
-
group = SteamGroup.new(103582791429521412)
|
21
|
-
p group.member_count
|
22
|
-
end
|
23
|
-
|
24
|
-
# This test tries to aquire information from a online Steam ID by using the
|
25
|
-
# custom URL. This test only passes if the parsing of the XML document works
|
26
|
-
def test_steam_id_by_custom_url
|
27
|
-
assert_nothing_raised do
|
28
|
-
steam_id = SteamId.new('koraktor')
|
29
|
-
p steam_id
|
30
|
-
p steam_id.game_stats('tf2')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# This test tries to aquire information from a online Steam ID by using the
|
35
|
-
# 64bit numeric SteamID. This test only passes if the parsing of the XML
|
36
|
-
# document works
|
37
|
-
def test_steam_id_by_steamid_64
|
38
|
-
assert_nothing_raised do
|
39
|
-
steam_id = SteamId.new(76561197961384956)
|
40
|
-
p steam_id
|
41
|
-
p steam_id.game_stats('tf2')
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
@@ -1,77 +0,0 @@
|
|
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) 2009-2011, Sebastian Staudt
|
5
|
-
|
6
|
-
require 'test/unit'
|
7
|
-
|
8
|
-
$:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
9
|
-
|
10
|
-
require 'core_ext/stringio'
|
11
|
-
|
12
|
-
class StringIOTests < Test::Unit::TestCase
|
13
|
-
|
14
|
-
def test_allocate
|
15
|
-
buffer = StringIO.alloc 10
|
16
|
-
assert_equal("\0" * 10, buffer.string)
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_byte
|
20
|
-
buffer = StringIO.new('test')
|
21
|
-
assert_equal('t'[0], buffer.byte)
|
22
|
-
assert_equal(3, buffer.remaining)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_float
|
26
|
-
buffer = StringIO.new('test')
|
27
|
-
assert_equal('7.71353668494131e+31', buffer.float.to_s)
|
28
|
-
assert_equal(0, buffer.remaining)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_long
|
32
|
-
buffer = StringIO.new('test')
|
33
|
-
assert_equal(1953719668, buffer.long)
|
34
|
-
assert_equal(0, buffer.remaining)
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_short
|
38
|
-
buffer = StringIO.new('test')
|
39
|
-
assert_equal(25972, buffer.short)
|
40
|
-
assert_equal(2, buffer.remaining)
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_signed_long
|
44
|
-
buffer = StringIO.new(" \255")
|
45
|
-
assert_equal(-1390403552, buffer.signed_long)
|
46
|
-
assert_equal(0, buffer.remaining)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_string
|
50
|
-
buffer = StringIO.new("test\0test")
|
51
|
-
assert_equal('test', buffer.cstring)
|
52
|
-
assert_equal(4, buffer.remaining)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_put
|
56
|
-
buffer = StringIO.new('te')
|
57
|
-
buffer.write('st')
|
58
|
-
assert_equal('st', buffer.string)
|
59
|
-
buffer = StringIO.alloc 4
|
60
|
-
buffer.write('test')
|
61
|
-
assert_equal('test', buffer.string)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_rewind
|
65
|
-
buffer = StringIO.new('test')
|
66
|
-
assert_equal(25972, buffer.short)
|
67
|
-
buffer.rewind
|
68
|
-
assert_equal(25972, buffer.short)
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_wrap
|
72
|
-
string = 'test'
|
73
|
-
buffer = StringIO.new(string)
|
74
|
-
assert_equal(string, buffer.string)
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|