steam-condenser 0.10.0 → 0.10.1
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/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
|
|