steam-vapor 0.0.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/.gitignore +17 -0
- data/Gemfile +4 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/vapor +129 -0
- data/lib/vapor.rb +1 -0
- data/lib/vapor/config.rb +68 -0
- data/lib/vapor/steam.rb +96 -0
- data/lib/vapor/version.rb +3 -0
- data/vapor.gemspec +28 -0
- metadata +142 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Vapor
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'vapor'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install vapor
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/vapor
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require 'user_config'
|
5
|
+
require 'steam-condenser'
|
6
|
+
require 'vapor/steam'
|
7
|
+
require 'vapor/config'
|
8
|
+
|
9
|
+
|
10
|
+
module Vapor
|
11
|
+
|
12
|
+
|
13
|
+
class Server < Thor
|
14
|
+
|
15
|
+
|
16
|
+
def initialize(*args)
|
17
|
+
super
|
18
|
+
@config = STConfig.new
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
desc "info <handle> [--ip <ip:port>]", "Display server info"
|
23
|
+
option :ip
|
24
|
+
def info(handle=nil)
|
25
|
+
if (options[:ip])
|
26
|
+
parts = options[:ip].strip.split(':')
|
27
|
+
ip = parts[0]
|
28
|
+
port = parts[1]
|
29
|
+
else
|
30
|
+
s = @config.lookup_server_by_handle(handle)
|
31
|
+
ip = s['ip']
|
32
|
+
port = s['port']
|
33
|
+
end
|
34
|
+
Steam.server_info(ip, port)
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
desc "list", "List servers"
|
39
|
+
def list
|
40
|
+
Steam.server_listing(@config.data['servers'])
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
desc "add <handle> <ip> [port]", "Save a server to the list"
|
45
|
+
def add(handle, ip, port=27015)
|
46
|
+
@config.add_server(handle, ip, port)
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
desc "rm <handle>", "Delete a server from the list"
|
51
|
+
def rm(handle)
|
52
|
+
@config.rm_server(handle)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
desc "connect <handle>", "Connect to a server"
|
57
|
+
def connect(handle)
|
58
|
+
s = @config.lookup_server_by_handle(handle)
|
59
|
+
uri = "steam://connect/#{s['ip']}:#{s['port']}"
|
60
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
61
|
+
system "start #{uri}"
|
62
|
+
elsif RbConfig::CONFIG['host_os'] =~ /darwin/
|
63
|
+
system "open #{uri}"
|
64
|
+
elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/
|
65
|
+
system "xdg-open #{uri}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
class User < Thor
|
75
|
+
|
76
|
+
|
77
|
+
def initialize(*args)
|
78
|
+
super
|
79
|
+
@config = STConfig.new
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
desc "profile <username>", "Display information about a Steam user"
|
84
|
+
def profile(username)
|
85
|
+
Steam.user_profile(username)
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
desc "friends", "Display friends list"
|
90
|
+
def friends
|
91
|
+
Steam.friends_list(@config.data['me'])
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
desc "mynameis <me>", "Tell Vapor your Steam username or numeric Steam ID"
|
96
|
+
def mynameis(me)
|
97
|
+
@config.set_user(me)
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
class CLI < Thor
|
106
|
+
|
107
|
+
|
108
|
+
def initialize(*args)
|
109
|
+
super
|
110
|
+
@config = STConfig.new
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
desc "server [SUBCOMMAND]", "Query servers"
|
115
|
+
subcommand "server", Server
|
116
|
+
|
117
|
+
|
118
|
+
desc "user [SUBCOMMAND]", "Lookup Steam user details"
|
119
|
+
subcommand "user", User
|
120
|
+
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
CLI.start
|
127
|
+
|
128
|
+
|
129
|
+
end
|
data/lib/vapor.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "vapor/version"
|
data/lib/vapor/config.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
class STConfig
|
2
|
+
|
3
|
+
|
4
|
+
attr_reader :data
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@dir = '.config/steamthing'
|
10
|
+
@file = 'conf.yaml'
|
11
|
+
@data = self.load
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
def load
|
17
|
+
|
18
|
+
conf = UserConfig.new(@dir)
|
19
|
+
yaml = conf[@file]
|
20
|
+
|
21
|
+
if yaml.empty?
|
22
|
+
UserConfig.default(@file, {
|
23
|
+
'servers' => [
|
24
|
+
{ 'handle' => 'rb1', 'ip' => '70.42.74.139', 'port' => 27015 },
|
25
|
+
{ 'handle' => '2forttex', 'ip' => '216.144.255.162', 'port' => 27015 }
|
26
|
+
]
|
27
|
+
})
|
28
|
+
conf.create(@file)
|
29
|
+
yaml = conf[@file]
|
30
|
+
end
|
31
|
+
|
32
|
+
return yaml
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
def add_server(handle, ip, port)
|
39
|
+
server = { 'handle' => handle, 'ip' => ip, 'port' => port }
|
40
|
+
@data['servers'].push(server)
|
41
|
+
@data.save
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
def rm_server(handle)
|
47
|
+
@data['servers'] = @data['servers'].reject { |s| handle == s['handle'] }
|
48
|
+
puts @data['servers']
|
49
|
+
@data.save
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
def lookup_server_by_handle(handle)
|
55
|
+
server = @data['servers'].select { |s| handle == s['handle'] }
|
56
|
+
return server[0]
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
def set_user(me)
|
62
|
+
@data['me'] = me
|
63
|
+
@data.save
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
end
|
data/lib/vapor/steam.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
class Steam
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
def self.server_info(ip, port)
|
6
|
+
|
7
|
+
server = self.ping_server(ip, port)
|
8
|
+
|
9
|
+
if server
|
10
|
+
|
11
|
+
server_info = server.server_info
|
12
|
+
|
13
|
+
puts "----------------------------------------------------"
|
14
|
+
puts "\033[36m" + server_info[:server_name] + "\033[0m"
|
15
|
+
puts "\033[32mPlayers:\033[0m #{server_info[:number_of_players]}/#{server_info[:max_players]} \t \033[32mMap:\033[0m #{server_info[:map_name]}"
|
16
|
+
puts "----------------------------------------------------"
|
17
|
+
|
18
|
+
players = server.players.sort_by{ |k, v| v.score }.reverse!
|
19
|
+
|
20
|
+
players.each do |name, info|
|
21
|
+
puts "\033[31m#{info.score}\033[0m\t#{name}"
|
22
|
+
end
|
23
|
+
|
24
|
+
else
|
25
|
+
|
26
|
+
puts "\nServer #{ip}:#{port} is not responding.\n\n"
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
def self.server_listing(servers)
|
35
|
+
|
36
|
+
puts "----------------------------------------------------"
|
37
|
+
|
38
|
+
servers.each do |s|
|
39
|
+
|
40
|
+
server = self.ping_server(s['ip'], s['port'])
|
41
|
+
|
42
|
+
if server
|
43
|
+
server_info = server.server_info
|
44
|
+
puts "\033[36m[#{s['handle']}]\033[0m " + server_info[:server_name].squeeze(' ').strip
|
45
|
+
puts "\033[32mPlayers:\033[0m #{server_info[:number_of_players]}/#{server_info[:max_players]} \t \033[32mMap:\033[0m #{server_info[:map_name]}"
|
46
|
+
else
|
47
|
+
puts "\033[36m[#{s['handle']}]\033[0m server not responding"
|
48
|
+
end
|
49
|
+
|
50
|
+
puts "----------------------------------------------------"
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
def self.ping_server(ip, port)
|
59
|
+
begin
|
60
|
+
server = SourceServer.new(ip, port)
|
61
|
+
rescue
|
62
|
+
server = nil
|
63
|
+
end
|
64
|
+
return server
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
def self.user_profile(user)
|
70
|
+
uid = Integer(user) rescue user
|
71
|
+
id = SteamId.new(uid)
|
72
|
+
puts "\033[36m#{id.nickname}\033[0m"
|
73
|
+
puts "\033[32mStatus:\033[0m #{id.state_message.sub('<br/>',': ').gsub(/<\/?[^>]*>/, "")}"
|
74
|
+
puts id.summary
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
def self.friends_list(me)
|
80
|
+
unless me.length > 0
|
81
|
+
puts "You have not set your Steam ID yet. Run \"vapor user mynameis <username or numeric ID>\""
|
82
|
+
return
|
83
|
+
end
|
84
|
+
id = SteamId.new(me)
|
85
|
+
puts "\n"
|
86
|
+
id.friends.each do |f|
|
87
|
+
friend = SteamId.new(f.steam_id64)
|
88
|
+
uid = (friend.custom_url) ? friend.custom_url : f.steam_id64
|
89
|
+
puts "\033[36m#{friend.nickname}\033[0m [#{uid}]"
|
90
|
+
puts "#{friend.state_message.sub('<br/>',': ').gsub(/<\/?[^>]*>/, "")}\n\n"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
end
|
data/vapor.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'vapor/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
|
8
|
+
spec.name = "steam-vapor"
|
9
|
+
spec.version = Vapor::VERSION
|
10
|
+
spec.authors = ["redwallhp"]
|
11
|
+
spec.description = "CLI Steam client"
|
12
|
+
spec.summary = "A command-line client for Steam and Source servers"
|
13
|
+
spec.homepage = "http://github.com/redwallhp"
|
14
|
+
spec.license = "GPLv2"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
24
|
+
spec.add_runtime_dependency "thor"
|
25
|
+
spec.add_runtime_dependency "user_config"
|
26
|
+
spec.add_runtime_dependency "steam-condenser"
|
27
|
+
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: steam-vapor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- redwallhp
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-05-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: thor
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: user_config
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: steam-condenser
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: CLI Steam client
|
95
|
+
email:
|
96
|
+
executables:
|
97
|
+
- vapor
|
98
|
+
extensions: []
|
99
|
+
extra_rdoc_files: []
|
100
|
+
files:
|
101
|
+
- .gitignore
|
102
|
+
- Gemfile
|
103
|
+
- README.md
|
104
|
+
- Rakefile
|
105
|
+
- bin/vapor
|
106
|
+
- lib/vapor.rb
|
107
|
+
- lib/vapor/config.rb
|
108
|
+
- lib/vapor/steam.rb
|
109
|
+
- lib/vapor/version.rb
|
110
|
+
- vapor.gemspec
|
111
|
+
homepage: http://github.com/redwallhp
|
112
|
+
licenses:
|
113
|
+
- GPLv2
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
hash: 4386472134216201780
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: 4386472134216201780
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 1.8.25
|
139
|
+
signing_key:
|
140
|
+
specification_version: 3
|
141
|
+
summary: A command-line client for Steam and Source servers
|
142
|
+
test_files: []
|