steamrb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []