steamrb 0.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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.rubocop.yml +4 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +116 -0
- data/Rakefile +21 -0
- data/bin/console +7 -0
- data/bin/setup +8 -0
- data/lib/ext/string.rb +42 -0
- data/lib/steam/byte_reader.rb +77 -0
- data/lib/steam/byte_writer.rb +96 -0
- data/lib/steam/client.rb +228 -0
- data/lib/steam/crypto.rb +113 -0
- data/lib/steam/emsg_util.rb +29 -0
- data/lib/steam/handler/auth.rb +78 -0
- data/lib/steam/handler/base.rb +79 -0
- data/lib/steam/handler/collection.rb +60 -0
- data/lib/steam/handler/game_coordinator.rb +80 -0
- data/lib/steam/handler/steam_apps.rb +35 -0
- data/lib/steam/handler/steam_user.rb +170 -0
- data/lib/steam/handler.rb +15 -0
- data/lib/steam/local_ip.rb +32 -0
- data/lib/steam/logger.rb +27 -0
- data/lib/steam/networking/connection.rb +178 -0
- data/lib/steam/networking/packet.rb +77 -0
- data/lib/steam/networking/packet_list.rb +27 -0
- data/lib/steam/networking.rb +14 -0
- data/lib/steam/plugins.rb +106 -0
- data/lib/steam/protocol/client_message.rb +13 -0
- data/lib/steam/protocol/gc_message.rb +9 -0
- data/lib/steam/protocol/gc_protobuf_message.rb +18 -0
- data/lib/steam/protocol/message.rb +99 -0
- data/lib/steam/protocol/protobuf_message.rb +54 -0
- data/lib/steam/protocol.rb +19 -0
- data/lib/steam/sentry_file.rb +42 -0
- data/lib/steam/server.rb +26 -0
- data/lib/steam/server_list.rb +34 -0
- data/lib/steam/version.rb +14 -0
- data/lib/steam.rb +46 -0
- data/steamrb.gemspec +37 -0
- metadata +213 -0
data/lib/steam/server.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Steam
|
3
|
+
# Represents a Steam server we can use
|
4
|
+
# @example Creating server object
|
5
|
+
# server = Server.new('127.0.0.1', 123)
|
6
|
+
# puts server.host # => '127.0.0.1'
|
7
|
+
# puts server.port # => 123
|
8
|
+
#
|
9
|
+
# @see Networking::Connection
|
10
|
+
class Server
|
11
|
+
# The host IP of the Steam server
|
12
|
+
attr_reader :host
|
13
|
+
|
14
|
+
# The host port of the Steam server
|
15
|
+
attr_reader :port
|
16
|
+
|
17
|
+
# Instantiate a Server
|
18
|
+
#
|
19
|
+
# @param host [String] the server host
|
20
|
+
# @param port [String] the server port
|
21
|
+
def initialize(host, port)
|
22
|
+
@host = host
|
23
|
+
@port = port
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Steam
|
3
|
+
# Represents a list of Servers we can connect to. There are a few
|
4
|
+
# defaults but an instance of this list should be updated as
|
5
|
+
# servers are sent down from Steam.
|
6
|
+
#
|
7
|
+
# @example Getting a random server
|
8
|
+
# list = ServerList.new
|
9
|
+
# list.sample # => Server
|
10
|
+
class ServerList
|
11
|
+
include Enumerable
|
12
|
+
|
13
|
+
# Instantiate a ServerList. Adds at least one Server object
|
14
|
+
# to the list
|
15
|
+
#
|
16
|
+
# @todo Add more servers
|
17
|
+
def initialize
|
18
|
+
@servers = [
|
19
|
+
Server.new('208.78.164.12', 27_017)
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
# Iterates over each Server in the list
|
24
|
+
#
|
25
|
+
# @example Iterating a server list
|
26
|
+
# list = ServerList.new
|
27
|
+
# list.each do |server|
|
28
|
+
# puts server.host
|
29
|
+
# end
|
30
|
+
def each(&block)
|
31
|
+
@servers.each(&block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Steam
|
3
|
+
# Major version of the gem
|
4
|
+
MAJOR = '0'
|
5
|
+
|
6
|
+
# Minor version of the gem
|
7
|
+
MINOR = '1'
|
8
|
+
|
9
|
+
# Patch version of the gem
|
10
|
+
PATCH = '0'
|
11
|
+
|
12
|
+
# Current Steam gem version
|
13
|
+
VERSION = [MAJOR, MINOR, PATCH].join('.')
|
14
|
+
end
|
data/lib/steam.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ext/string'
|
4
|
+
|
5
|
+
require 'steam/id'
|
6
|
+
|
7
|
+
# Require Steam Language from the steamd gem
|
8
|
+
require 'steamd'
|
9
|
+
Steamd.load_language
|
10
|
+
|
11
|
+
# Require any protobufs we care about from the steam-proto gem
|
12
|
+
require 'steam/proto'
|
13
|
+
Steam::Proto.load_protobufs(:steamclient, :gc)
|
14
|
+
|
15
|
+
require 'stringio'
|
16
|
+
|
17
|
+
require 'steam/version'
|
18
|
+
require 'steam/logger'
|
19
|
+
require 'steam/crypto'
|
20
|
+
require 'steam/sentry_file'
|
21
|
+
require 'steam/byte_reader'
|
22
|
+
require 'steam/byte_writer'
|
23
|
+
require 'steam/protocol'
|
24
|
+
require 'steam/server'
|
25
|
+
require 'steam/server_list'
|
26
|
+
require 'steam/networking'
|
27
|
+
require 'steam/handler'
|
28
|
+
require 'steam/plugins'
|
29
|
+
require 'steam/client'
|
30
|
+
require 'steam/local_ip'
|
31
|
+
require 'steam/emsg_util'
|
32
|
+
|
33
|
+
# Ruby access to Steam
|
34
|
+
module Steam
|
35
|
+
# Logger object. Logs to the given IO object. Defaults to STDOUT
|
36
|
+
#
|
37
|
+
# @param io [:read] the io stream
|
38
|
+
# @return [Steam::Logger]
|
39
|
+
def self.logger(io = STDOUT, level = Steam::Logger::INFO)
|
40
|
+
@logger ||= begin
|
41
|
+
logger = Steam::Logger.new(io)
|
42
|
+
logger.level = level
|
43
|
+
logger
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/steamrb.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'steam/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'steamrb'
|
9
|
+
spec.version = Steam::VERSION
|
10
|
+
spec.authors = ['Taylor Finnell']
|
11
|
+
spec.email = ['tmfinnell@gmail.com']
|
12
|
+
spec.license = 'MIT'
|
13
|
+
|
14
|
+
spec.summary = 'A Ruby Steam client.'
|
15
|
+
spec.description = 'A Ruby Steam client.'
|
16
|
+
spec.homepage = 'http://github.com/fastpeek/steam'
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
+
f.match(%r{^(test|spec|features)/})
|
20
|
+
end
|
21
|
+
spec.bindir = 'bin'
|
22
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
|
+
spec.require_paths = ['lib']
|
24
|
+
|
25
|
+
spec.required_ruby_version = '>= 2.3.1'
|
26
|
+
|
27
|
+
spec.add_dependency 'steamd', '~> 0.1'
|
28
|
+
spec.add_dependency 'steam-proto', '~> 0.1'
|
29
|
+
spec.add_dependency 'steam-id', '~> 0.1'
|
30
|
+
|
31
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
32
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
33
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 0.44.1'
|
35
|
+
spec.add_development_dependency 'pry', '~> 0.10.4'
|
36
|
+
spec.add_development_dependency 'steam-csgo', '~> 0.1'
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: steamrb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Taylor Finnell
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: steamd
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: steam-proto
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: steam-id
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.13'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.13'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.44.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.44.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.10.4
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.10.4
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: steam-csgo
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.1'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.1'
|
139
|
+
description: A Ruby Steam client.
|
140
|
+
email:
|
141
|
+
- tmfinnell@gmail.com
|
142
|
+
executables:
|
143
|
+
- console
|
144
|
+
- setup
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files: []
|
147
|
+
files:
|
148
|
+
- ".gitignore"
|
149
|
+
- ".rspec"
|
150
|
+
- ".rubocop.yml"
|
151
|
+
- ".travis.yml"
|
152
|
+
- Gemfile
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- bin/console
|
156
|
+
- bin/setup
|
157
|
+
- lib/ext/string.rb
|
158
|
+
- lib/steam.rb
|
159
|
+
- lib/steam/byte_reader.rb
|
160
|
+
- lib/steam/byte_writer.rb
|
161
|
+
- lib/steam/client.rb
|
162
|
+
- lib/steam/crypto.rb
|
163
|
+
- lib/steam/emsg_util.rb
|
164
|
+
- lib/steam/handler.rb
|
165
|
+
- lib/steam/handler/auth.rb
|
166
|
+
- lib/steam/handler/base.rb
|
167
|
+
- lib/steam/handler/collection.rb
|
168
|
+
- lib/steam/handler/game_coordinator.rb
|
169
|
+
- lib/steam/handler/steam_apps.rb
|
170
|
+
- lib/steam/handler/steam_user.rb
|
171
|
+
- lib/steam/local_ip.rb
|
172
|
+
- lib/steam/logger.rb
|
173
|
+
- lib/steam/networking.rb
|
174
|
+
- lib/steam/networking/connection.rb
|
175
|
+
- lib/steam/networking/packet.rb
|
176
|
+
- lib/steam/networking/packet_list.rb
|
177
|
+
- lib/steam/plugins.rb
|
178
|
+
- lib/steam/protocol.rb
|
179
|
+
- lib/steam/protocol/client_message.rb
|
180
|
+
- lib/steam/protocol/gc_message.rb
|
181
|
+
- lib/steam/protocol/gc_protobuf_message.rb
|
182
|
+
- lib/steam/protocol/message.rb
|
183
|
+
- lib/steam/protocol/protobuf_message.rb
|
184
|
+
- lib/steam/sentry_file.rb
|
185
|
+
- lib/steam/server.rb
|
186
|
+
- lib/steam/server_list.rb
|
187
|
+
- lib/steam/version.rb
|
188
|
+
- steamrb.gemspec
|
189
|
+
homepage: http://github.com/fastpeek/steam
|
190
|
+
licenses:
|
191
|
+
- MIT
|
192
|
+
metadata: {}
|
193
|
+
post_install_message:
|
194
|
+
rdoc_options: []
|
195
|
+
require_paths:
|
196
|
+
- lib
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 2.3.1
|
202
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
207
|
+
requirements: []
|
208
|
+
rubyforge_project:
|
209
|
+
rubygems_version: 2.5.1
|
210
|
+
signing_key:
|
211
|
+
specification_version: 4
|
212
|
+
summary: A Ruby Steam client.
|
213
|
+
test_files: []
|