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 ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vapor.gemspec
4
+ gemspec
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"
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module Vapor
2
+ VERSION = "0.0.1"
3
+ 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: []