steamrb 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/LICENSE +21 -0
- data/README.md +11 -1
- data/lib/steam/byte_reader.rb +4 -40
- data/lib/steam/byte_writer.rb +0 -13
- data/lib/steam/emsg_util.rb +2 -1
- data/lib/steam/handler/collection.rb +2 -1
- data/lib/steam/logger.rb +33 -4
- data/lib/steam/networking/packet.rb +2 -2
- data/lib/steam/plugins.rb +10 -11
- data/lib/steam/version.rb +1 -1
- data/lib/steam.rb +2 -6
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b1b84d1db3f1b16870c6f5ee648e92d63ca80d6
|
4
|
+
data.tar.gz: 596e8ec9bcaea8a9416c91055970d04fb668f949
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a3e00b660a8b68b8a16fdc65ef4371a355b65c89fb2e9d981072db2c2eb3492fba7125d1a13100f542f35e413947a73eef941e793f99d1e90758090f05e7a1
|
7
|
+
data.tar.gz: c88a674ece9968ebb3c9a4079652bd958c75dceae9b4dfa8de1bab2ca8b6655a4332af9d598fcf98896ac56c7d919cf9db7e39c9a540ebca715dfb0485a6683d
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--markup=markdown
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2016
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Steam
|
2
|
+
[](https://travis-ci.org/fastpeek/steamrb)
|
3
|
+

|
2
4
|
|
3
5
|
Ruby Client for Steam.
|
4
6
|
|
@@ -108,9 +110,17 @@ bot.plugin(:csgo)
|
|
108
110
|
bot.start
|
109
111
|
```
|
110
112
|
|
113
|
+
## Running the tests
|
114
|
+
|
115
|
+
To run the integration tests you must specify a Steam username and password. For
|
116
|
+
the plugin integration test to pass this account must have CS:GO installed.
|
117
|
+
|
118
|
+
`STEAM_LOG_LEVEL=DEBUG USERNAME=username PASSWORD=password rake spec:all`
|
119
|
+
|
111
120
|
## License
|
112
121
|
|
113
|
-
MIT
|
122
|
+
[MIT](https://github.com/fastpeek/steam/blob/master/LICENSE)
|
114
123
|
|
115
124
|
## References
|
116
125
|
[SteamKit](https://github.com/SteamRE/SteamKit/)
|
126
|
+
|
data/lib/steam/byte_reader.rb
CHANGED
@@ -6,8 +6,6 @@ module Steam
|
|
6
6
|
class ByteReader
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
-
attr_reader :io
|
10
|
-
|
11
9
|
# Create a ByteReader object
|
12
10
|
#
|
13
11
|
# @param io [:read] an io object
|
@@ -15,63 +13,29 @@ module Steam
|
|
15
13
|
@io = io
|
16
14
|
end
|
17
15
|
|
18
|
-
# Reads an unsigned 64 bit integer from the stream
|
19
|
-
#
|
20
|
-
# @return [Integer] The 64 bit integer
|
21
|
-
def read_int64
|
22
|
-
io.read(8).unpack('C*').each_with_index.reduce(0) do |sum, (byte, index)|
|
23
|
-
sum + byte * (256**index)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
alias int64 read_int64
|
27
|
-
|
28
|
-
# Reads an unsigned short from the stream
|
29
|
-
#
|
30
|
-
# @return [Integer] The short
|
31
|
-
def read_short
|
32
|
-
io.read(2).unpack('S*').first
|
33
|
-
end
|
34
|
-
alias short read_short
|
35
|
-
|
36
16
|
# Reads a string of a given length from the stream
|
37
17
|
#
|
18
|
+
# @param len [Integer] the number of bytes to read
|
38
19
|
# @return [String] The read string
|
39
20
|
def string(len)
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
# Reads a single bytes from the stream
|
44
|
-
#
|
45
|
-
# @return [Integer] The byte
|
46
|
-
def byte
|
47
|
-
io.read(1).ord
|
21
|
+
read(len)
|
48
22
|
end
|
49
23
|
|
50
24
|
# Reads an unsigned 32 bit integer from the stream
|
51
25
|
#
|
52
26
|
# @return [Integer] The 32 bit integer
|
53
27
|
def unsigned_int32
|
54
|
-
io.read(4).unpack('<I*').first
|
28
|
+
@io.read(4).unpack('<I*').first
|
55
29
|
end
|
56
30
|
|
57
31
|
# Reads an signed 32 bit integer from the stream
|
58
32
|
#
|
59
33
|
# @return [Integer] The 32 bit integer
|
60
34
|
def signed_int32
|
61
|
-
io.read(4).unpack('<i*').first
|
62
|
-
end
|
63
|
-
|
64
|
-
# Reads an signed 16 bit integer from the stream
|
65
|
-
#
|
66
|
-
# @return [Integer] The 16 bit integer
|
67
|
-
def signed_int16
|
68
|
-
io.read(2).unpack('<s*').first
|
35
|
+
@io.read(4).unpack('<i*').first
|
69
36
|
end
|
70
37
|
|
71
38
|
def_delegator :@io, :read, :read
|
72
|
-
def_delegator :@io, :readbyte, :readbyte
|
73
39
|
def_delegator :@io, :eof?, :eof?
|
74
|
-
def_delegator :@io, :tell, :tell
|
75
|
-
def_delegator :@io, :lineno, :lineno
|
76
40
|
end
|
77
41
|
end
|
data/lib/steam/byte_writer.rb
CHANGED
@@ -6,8 +6,6 @@ module Steam
|
|
6
6
|
class ByteWriter
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
-
attr_reader :io
|
10
|
-
|
11
9
|
# Wrap an Int64 allowing the lo and hi
|
12
10
|
# 32 bits to be extracted
|
13
11
|
class Int64Type
|
@@ -55,11 +53,6 @@ module Steam
|
|
55
53
|
@io.write([value].pack('<I'))
|
56
54
|
end
|
57
55
|
|
58
|
-
# Writes an signed long from the stream
|
59
|
-
def write_signed_long(value)
|
60
|
-
@io.write([value].pack('<l_'))
|
61
|
-
end
|
62
|
-
|
63
56
|
# Writes a 32 bit intger to the stream
|
64
57
|
def write_int32(value)
|
65
58
|
@io.write([value].pack('<l'))
|
@@ -74,16 +67,10 @@ module Steam
|
|
74
67
|
end
|
75
68
|
end
|
76
69
|
|
77
|
-
# Writes a single byte to the stream
|
78
|
-
def write_byte(byte)
|
79
|
-
@io.write([byte].pack('C'))
|
80
|
-
end
|
81
|
-
|
82
70
|
# Writes the given bytes to the stream
|
83
71
|
def write(bytes)
|
84
72
|
@io.write(bytes)
|
85
73
|
end
|
86
|
-
alias write_string write
|
87
74
|
|
88
75
|
# The byte representation of this writer object
|
89
76
|
#
|
data/lib/steam/emsg_util.rb
CHANGED
@@ -3,7 +3,8 @@ module Steam
|
|
3
3
|
# Utility to provide EMsg convenience. Allows looking up
|
4
4
|
# EMsg name by the EMsg integer value.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# @example Getting an EMsg name from its value
|
7
|
+
# EMsgUtil.new(123).name # => 'SOME_EMSG'
|
7
8
|
class EMsgUtil
|
8
9
|
# Instantiate the object
|
9
10
|
#
|
@@ -22,7 +22,8 @@ module Steam
|
|
22
22
|
handler = find_handler(packet.msg_type)
|
23
23
|
|
24
24
|
if handler.nil?
|
25
|
-
|
25
|
+
emsg = EMsgUtil.new(packet.emsg)
|
26
|
+
Steam.logger.debug("No hander found for: #{emsg.name}")
|
26
27
|
return false
|
27
28
|
end
|
28
29
|
|
data/lib/steam/logger.rb
CHANGED
@@ -2,8 +2,16 @@
|
|
2
2
|
require 'logger'
|
3
3
|
|
4
4
|
module Steam
|
5
|
-
# Small wrapper around the Ruby Logger class
|
5
|
+
# Small wrapper around the Ruby Logger class. A `STEAM_LOG_LEVEL`
|
6
|
+
# environment variable may also dictate the log level.
|
7
|
+
#
|
8
|
+
# @example Creating a Logger object
|
9
|
+
# logger = Logger.new(STDOUT)
|
10
|
+
# logger.level = Logger::WARN
|
6
11
|
class Logger < ::Logger
|
12
|
+
# Raised when the #env_key env variable is not supported
|
13
|
+
InvalidLogLevel = Class.new(StandardError)
|
14
|
+
|
7
15
|
# Log level WARN
|
8
16
|
WARN = ::Logger::WARN
|
9
17
|
# Log level INFO
|
@@ -18,10 +26,31 @@ module Steam
|
|
18
26
|
# Create a Logger that logs to a given IO object
|
19
27
|
#
|
20
28
|
# @param io [#read] The io object
|
21
|
-
|
22
|
-
def initialize(io, level = DEBUG)
|
23
|
-
self.level = level
|
29
|
+
def initialize(io)
|
24
30
|
super(io)
|
31
|
+
self.level = _level
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# @api private
|
37
|
+
def _level
|
38
|
+
level = ENV[env_key]
|
39
|
+
level = 'DEBUG' if level.nil? || level.empty?
|
40
|
+
unless allowed_levels.include?(level.to_s)
|
41
|
+
raise InvalidLogLevel, "log level #{level} not allowed, must be one of"\
|
42
|
+
"#{allowed_levels}"
|
43
|
+
end
|
44
|
+
self.class.const_get("Logger::#{level}")
|
45
|
+
end
|
46
|
+
|
47
|
+
# @api private
|
48
|
+
def allowed_levels
|
49
|
+
%w(WARN INFO ERROR DEBUG FATAL)
|
50
|
+
end
|
51
|
+
|
52
|
+
def env_key
|
53
|
+
'STEAM_LOG_LEVEL'
|
25
54
|
end
|
26
55
|
end
|
27
56
|
end
|
data/lib/steam/plugins.rb
CHANGED
@@ -89,18 +89,17 @@ module Steam
|
|
89
89
|
|
90
90
|
# @api private
|
91
91
|
def require_plugins
|
92
|
-
|
93
|
-
|
94
|
-
require "steam/#{plugin}"
|
95
|
-
plugin
|
96
|
-
rescue LoadError
|
97
|
-
msg = "Failed to load #{plugin} plugin. Is it in your Gemfile?"
|
98
|
-
Steamd.logger.error(msg)
|
99
|
-
nil
|
100
|
-
end
|
101
|
-
end
|
92
|
+
@plugins.map { |plugin| _require(plugin) }.compact
|
93
|
+
end
|
102
94
|
|
103
|
-
|
95
|
+
# @api private
|
96
|
+
def _require(plugin)
|
97
|
+
require "steam/#{plugin}"
|
98
|
+
plugin
|
99
|
+
rescue LoadError
|
100
|
+
msg = "Failed to load steam-#{plugin} plugin. Is it in your Gemfile?"
|
101
|
+
Steamd.logger.error(msg)
|
102
|
+
nil
|
104
103
|
end
|
105
104
|
end
|
106
105
|
end
|
data/lib/steam/version.rb
CHANGED
data/lib/steam.rb
CHANGED
@@ -36,11 +36,7 @@ module Steam
|
|
36
36
|
#
|
37
37
|
# @param io [:read] the io stream
|
38
38
|
# @return [Steam::Logger]
|
39
|
-
def self.logger(io = STDOUT
|
40
|
-
@logger ||=
|
41
|
-
logger = Steam::Logger.new(io)
|
42
|
-
logger.level = level
|
43
|
-
logger
|
44
|
-
end
|
39
|
+
def self.logger(io = STDOUT)
|
40
|
+
@logger ||= Steam::Logger.new(io)
|
45
41
|
end
|
46
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steamrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taylor Finnell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: steamd
|
@@ -149,7 +149,9 @@ files:
|
|
149
149
|
- ".rspec"
|
150
150
|
- ".rubocop.yml"
|
151
151
|
- ".travis.yml"
|
152
|
+
- ".yardopts"
|
152
153
|
- Gemfile
|
154
|
+
- LICENSE
|
153
155
|
- README.md
|
154
156
|
- Rakefile
|
155
157
|
- bin/console
|