steam-condenser 0.10.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +2 -2
- data/lib/steam/community/cacheable.rb +2 -2
- data/lib/steam/community/steam_group.rb +5 -5
- data/lib/steam/community/steam_id.rb +4 -3
- data/lib/steam/packets/s2a_info2_packet.rb +11 -7
- data/lib/steam/packets/s2a_rules_packet.rb +0 -1
- data/lib/steam/packets/steam_packet.rb +1 -9
- data/lib/steam/servers/game_server.rb +3 -3
- data/lib/steam/sockets/goldsrc_socket.rb +6 -6
- data/lib/steam/sockets/source_socket.rb +4 -4
- data/lib/steam/sockets/steam_socket.rb +2 -2
- metadata +3 -3
data/VERSION.yml
CHANGED
@@ -45,9 +45,9 @@ module Cacheable
|
|
45
45
|
# Otherwise a new object is created.
|
46
46
|
# Overrides the default constructor.
|
47
47
|
def new(id, fetch = true, bypass_cache = false)
|
48
|
-
if cached?(id)
|
48
|
+
if cached?(id) && !bypass_cache
|
49
49
|
object = class_variable_get(:@@cache)[id]
|
50
|
-
object.
|
50
|
+
object.fetch if fetch && !object.fetched?
|
51
51
|
object
|
52
52
|
else
|
53
53
|
super(id, fetch)
|
@@ -55,7 +55,7 @@ class SteamGroup
|
|
55
55
|
@group_id64 = member_data.elements['groupID64'].text.to_i
|
56
56
|
end
|
57
57
|
total_pages = member_data.elements['totalPages'].text.to_i
|
58
|
-
|
58
|
+
|
59
59
|
member_data.elements['members'].elements.each do |member|
|
60
60
|
@members << SteamId.new(member.text.to_i, false)
|
61
61
|
end
|
@@ -78,10 +78,10 @@ class SteamGroup
|
|
78
78
|
end
|
79
79
|
|
80
80
|
# Returns the members of this group
|
81
|
-
# Calls +
|
81
|
+
# Calls +fetch+ if the members haven't been fetched already.
|
82
82
|
def members
|
83
|
-
|
83
|
+
fetch if @members.nil? || @members[0].nil?
|
84
84
|
@members
|
85
85
|
end
|
86
|
-
|
87
|
-
end
|
86
|
+
|
87
|
+
end
|
@@ -94,6 +94,10 @@ class SteamId
|
|
94
94
|
raise SteamCondenserException.new(profile.elements['error'].text)
|
95
95
|
end
|
96
96
|
|
97
|
+
@nickname = profile.elements['steamID'].text
|
98
|
+
@steam_id64 = profile.elements['steamID64'].text.to_i
|
99
|
+
@vac_banned = (profile.elements['vacBanned'].text == 1)
|
100
|
+
|
97
101
|
unless REXML::XPath.first(profile, 'privacyMessage').nil?
|
98
102
|
raise SteamCondenserException.new(profile.elements['privacyMessage'].text)
|
99
103
|
end
|
@@ -102,9 +106,6 @@ class SteamId
|
|
102
106
|
@online_state = profile.elements['onlineState'].text
|
103
107
|
@privacy_state = profile.elements['privacyState'].text
|
104
108
|
@state_message = profile.elements['stateMessage'].text
|
105
|
-
@nickname = profile.elements['steamID'].text
|
106
|
-
@steam_id64 = profile.elements['steamID64'].text.to_i
|
107
|
-
@vac_banned = (profile.elements['vacBanned'].text == 1)
|
108
109
|
@visibility_state = profile.elements['visibilityState'].text.to_i
|
109
110
|
|
110
111
|
# Only public profiles can be scanned for further information
|
@@ -28,17 +28,21 @@ class S2A_INFO2_Packet < S2A_INFO_BasePacket
|
|
28
28
|
@secure = @content_data.get_byte == 1
|
29
29
|
@game_version = @content_data.get_string
|
30
30
|
extra_data_flag = @content_data.get_byte
|
31
|
-
|
32
|
-
|
31
|
+
|
32
|
+
unless extra_data_flag & 0x80 == 0
|
33
33
|
@server_port = @content_data.get_short
|
34
34
|
end
|
35
|
-
|
36
|
-
|
35
|
+
|
36
|
+
unless extra_data_flag & 0x10 == 0
|
37
|
+
@server_id = @content_data.get_long | (@content_data.get_long << 32)
|
38
|
+
end
|
39
|
+
|
40
|
+
unless extra_data_flag & 0x40 == 0
|
37
41
|
@tv_port = @content_data.get_short
|
38
42
|
@tv_name = @content_data.get_string
|
39
|
-
end
|
40
|
-
|
41
|
-
|
43
|
+
end
|
44
|
+
|
45
|
+
unless extra_data_flag & 0x20 == 0
|
42
46
|
@server_tags = @content_data.get_string
|
43
47
|
end
|
44
48
|
end
|
@@ -31,16 +31,8 @@ class SteamPacket
|
|
31
31
|
end
|
32
32
|
|
33
33
|
# Returns a packed string representing the packet's data
|
34
|
-
#
|
35
|
-
# TODO Has to automatically split packets greater than 1400 bytes
|
36
34
|
def to_s
|
37
|
-
packet_data = [0xFF, 0xFF, 0xFF].pack("
|
38
|
-
|
39
|
-
unless @split_packet
|
40
|
-
packet_data << [0xFF].pack("c")
|
41
|
-
else
|
42
|
-
packet_data << [0xFE].pack("c")
|
43
|
-
end
|
35
|
+
packet_data = [0xFF, 0xFF, 0xFF, 0xFF].pack("cccc")
|
44
36
|
|
45
37
|
return packet_data << [@header_data, @content_data.array].pack("ca*")
|
46
38
|
end
|
@@ -122,11 +122,11 @@ class GameServer
|
|
122
122
|
end
|
123
123
|
|
124
124
|
unless response_packet.kind_of? expected_response
|
125
|
-
|
125
|
+
puts "Expected #{expected_response}, got #{response_packet.class}." if $DEBUG
|
126
126
|
self.handle_response_for_request(request_type, false) if repeat_on_failure
|
127
127
|
end
|
128
128
|
rescue TimeoutException
|
129
|
-
|
129
|
+
puts "Expected #{expected_response}, but timed out." if $DEBUG
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
@@ -193,7 +193,7 @@ class GameServer
|
|
193
193
|
|
194
194
|
if @player_hash != nil
|
195
195
|
return_string << "Players:\n"
|
196
|
-
@player_hash.
|
196
|
+
@player_hash.each_value do |player|
|
197
197
|
return_string << " #{player}\n"
|
198
198
|
end
|
199
199
|
end
|
@@ -35,9 +35,9 @@ class GoldSrcSocket < SteamSocket
|
|
35
35
|
|
36
36
|
# Caching of split packet data
|
37
37
|
split_packets[packet_number - 1] = @buffer.get
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
|
39
|
+
puts "Received packet #{packet_number} of #{packet_count} for request ##{request_id}" if $DEBUG
|
40
|
+
|
41
41
|
# Receiving the next packet
|
42
42
|
if split_packets.size < packet_count
|
43
43
|
begin
|
@@ -55,9 +55,9 @@ class GoldSrcSocket < SteamSocket
|
|
55
55
|
else
|
56
56
|
packet = SteamPacketFactory.get_packet_from_data(@buffer.get)
|
57
57
|
end
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
|
59
|
+
puts "Got reply of type \"#{packet.class.to_s}\"." if $DEBUG
|
60
|
+
|
61
61
|
return packet
|
62
62
|
end
|
63
63
|
|
@@ -36,8 +36,8 @@ class SourceSocket < SteamSocket
|
|
36
36
|
|
37
37
|
# Caching of split packet data
|
38
38
|
split_packets[packet_number - 1] = @buffer.get
|
39
|
-
|
40
|
-
|
39
|
+
|
40
|
+
puts "Received packet #{packet_number} of #{packet_count} for request ##{request_id}" if $DEBUG
|
41
41
|
|
42
42
|
# Receiving the next packet
|
43
43
|
if split_packets.size < packet_count
|
@@ -61,9 +61,9 @@ class SourceSocket < SteamSocket
|
|
61
61
|
end
|
62
62
|
|
63
63
|
if is_compressed
|
64
|
-
|
64
|
+
puts "Got compressed reply of type \"#{packet.class.to_s}\"." if $DEBUG
|
65
65
|
else
|
66
|
-
|
66
|
+
puts "Got reply of type \"#{packet.class.to_s}\"." if $DEBUG
|
67
67
|
end
|
68
68
|
|
69
69
|
return packet
|
@@ -47,8 +47,8 @@ class SteamSocket
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def send(data_packet)
|
50
|
-
|
51
|
-
|
50
|
+
puts "Sending data packet of type \"#{data_packet.class.to_s}\"." if $DEBUG
|
51
|
+
|
52
52
|
@buffer = ByteBuffer.wrap(data_packet.to_s)
|
53
53
|
@channel.write(@buffer)
|
54
54
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 10
|
8
|
-
-
|
9
|
-
version: 0.10.
|
8
|
+
- 1
|
9
|
+
version: 0.10.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sebastian Staudt
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-05 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|