ts3query 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7563f7b294f500b54f47fbde092f70394211170c
4
+ data.tar.gz: 038562ba7964c61dcde6126454a86f2d40ea06cc
5
+ SHA512:
6
+ metadata.gz: 031dcdc6b422a648c5f2dd4f09f6ed40f5c5bf1b9be3786d5dcc78beab5393ce390e8ebf67cfb2b7a692cf882cab663b7a8018805e6e4bcada674de12058e17b
7
+ data.tar.gz: 383df37aefab71c19bdecb82b3399ec263a184641faec6d6fb48e99242f1bf11cd17b9091a8a7c00c18d3269781e068cd80b8a45b437ba5ff083793ea91fee01
@@ -5,39 +5,44 @@
5
5
  In <b>Rails 3</b>, add this to your Gemfile and run the +bundle+ command.
6
6
 
7
7
  gem "ts3query"
8
-
8
+
9
9
  == Getting Started
10
10
 
11
11
  === Connecting to a Teamspeak 3 Server
12
12
 
13
- @query = TS3Query.connect :address => "your-address.com" # default => 127.0.0.1
14
- :port => 1234 # default => 10011
15
- :username => "myqueryuser" # default => serveradmin
16
- :password => "myquerypassword"
13
+ @query = TS3Query.server_connect :address => "your-address.com" # default => 127.0.0.1
14
+ :port => 1234 # default => 10011
15
+ :username => "myqueryuser" # default => serveradmin
16
+ :password => "myquerypassword"
17
+
18
+ === Connecting to a Teamspeak 3 Client (via ClientQuery plugin)
17
19
 
18
- This will raise an +ConnectionRefused+ error, if the server does not response or the data are wrong.
20
+ @query = TS3Query.client_connect :address => "your-address.com" # default => 127.0.0.1
21
+ :port => 1234 # default => 25639
22
+
23
+ This will raise an +ConnectionRefused+ error, if the client does not respond or the credentials are wrong.
19
24
 
20
25
  === Executing query commands
21
26
 
22
27
  This retuns a result hash with all server informations.
23
-
28
+
24
29
  result = @query.version()
25
-
30
+
26
31
  This will return a hash with the serverlist. (Options -uid and -short)
27
32
 
28
33
  result = @query.serverlist do |opt|
29
- opt.uid
30
- opt.short
34
+ opt.uid
35
+ opt.short
31
36
  end
32
37
 
33
38
  This will select the first server. (Parameters sid=1)
34
39
 
35
40
  @query.use :sid => 1
36
-
41
+
37
42
  You can also combine parameters and options.
38
43
 
39
44
  @query.use :sid => 1 do |opt|
40
- opt.virtual
45
+ opt.virtual
41
46
  end
42
47
 
43
48
  === Close the connection
@@ -45,13 +50,13 @@ You can also combine parameters and options.
45
50
  If you don't need the query connection any longer you should close it.
46
51
 
47
52
  @query.disconnect
48
-
53
+
49
54
  === Query commands
50
55
 
51
56
  For a full command reference you can download the {Teamspeak 3 Query Manuel}[http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf].
52
57
 
53
58
  == Contributing to TS3Query
54
-
59
+
55
60
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
56
61
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
57
62
  * Fork the project.
@@ -1,15 +1,30 @@
1
- require 'ts3query/ts3_connection'
1
+ require 'ts3query/server_connection'
2
+ require 'ts3query/client_connection'
2
3
 
3
4
  module TS3Query
4
-
5
+
6
+ DefaultServerParams = {
7
+ :address => "127.0.0.1",
8
+ :port => "10011",
9
+ :username => "serveradmin"
10
+ }
11
+
12
+ DefaultClientParams = {
13
+ :address => "127.0.0.1",
14
+ :port => "25639"
15
+ }
16
+
5
17
  def self.connect(params = {})
6
- params = {
7
- :address => "127.0.0.1",
8
- :port => "10011",
9
- :username => "serveradmin"
10
- }.merge(params)
11
-
12
- TS3Connection.new params
18
+ warn "DEPRECATED(#{Kernel.caller.first}) use TS3Query.server_connect instead of TS3Query.connect"
19
+ server_connect params
20
+ end
21
+
22
+ def self.server_connect(params = {})
23
+ ServerConnection.new DefaultServerParams.merge(params)
24
+ end
25
+
26
+ def self.client_connect(params = {})
27
+ ClientConnection.new DefaultClientParams.merge(params)
13
28
  end
14
-
15
- end
29
+
30
+ end
@@ -0,0 +1,17 @@
1
+ require 'ts3query/ts3_connection'
2
+
3
+ module TS3Query
4
+ class ClientConnection < TS3Connection
5
+ private
6
+
7
+ def connect(params)
8
+ begin
9
+ @connection = Net::Telnet::new("Host" => params[:address], "Port" => params[:port])
10
+ @connection.waitfor("Match" => /TS3 Client\n(.*)\n/,
11
+ "Timeout" => 3)
12
+ rescue
13
+ raise ConnectionRefused, "client not available"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module TS3Query
2
+ class ConnectionRefused < StandardError; end
3
+ end
@@ -0,0 +1,13 @@
1
+ module TS3Query
2
+ class QueryOptions
3
+ attr_reader :options
4
+
5
+ def initialize
6
+ @options = []
7
+ end
8
+
9
+ def method_missing(meth, *args, &block)
10
+ options << meth.to_s
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ require 'ts3query/ts3_connection'
2
+
3
+ module TS3Query
4
+ class ServerConnection < TS3Connection
5
+ private
6
+
7
+ def connect(params)
8
+ begin
9
+ @connection = Net::Telnet::new("Host" => params[:address], "Port" => params[:port])
10
+ @connection.waitfor("Match" => /TS3\n(.*)\n/,
11
+ "Timeout" => 3)
12
+ rescue
13
+ raise ConnectionRefused, "server not available"
14
+ end
15
+
16
+ begin
17
+ @connection.cmd("String" => "login client_login_name=#{params[:username]} client_login_password=#{params[:password]}\r",
18
+ "Match" => /error id=0 msg=ok\n/,
19
+ "Timeout" => 3)
20
+ rescue
21
+ raise ConnectionRefused, "wrong user data"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,88 +1,57 @@
1
1
  require 'net/telnet'
2
+ require 'ts3query/errors'
3
+ require 'ts3query/query_options'
2
4
 
3
- class TS3Connection
4
- def initialize(params)
5
- connect(params)
6
- end
7
-
8
- def disconnect
9
- @connection.close
10
- end
5
+ module TS3Query
6
+ class TS3Connection
7
+ def initialize(params)
8
+ connect(params)
9
+ end
11
10
 
12
- def method_missing(meth, *args, &block)
13
- result = []
14
- options = ""
15
- params = ""
11
+ def disconnect
12
+ @connection.close
13
+ end
16
14
 
17
- if block
18
- query_options = QueryOptions.new
19
- yield query_options
15
+ def method_missing(meth, *args, &block)
16
+ result = []
17
+ options = ""
18
+ params = ""
20
19
 
21
- query_options.options.each do |opt|
22
- options += " -#{opt}"
23
- end
24
- end
20
+ if block
21
+ query_options = QueryOptions.new
22
+ yield query_options
25
23
 
26
- if args.first
27
- args.first.each do |key, value|
28
- params += " #{key}=#{value}"
24
+ query_options.options.each do |opt|
25
+ options += " -#{opt}"
26
+ end
29
27
  end
30
- end
31
28
 
32
- @connection.cmd("String" => "#{meth}#{params}#{options}\r",
33
- "Match" => /error id=0 msg=ok\n/,
34
- "Timeout" => 3) { |data|
35
- data.split("|").each do |current|
36
- current_data = {}
37
- current.split(" ").each do |entity|
38
- current_data[entity.split("=")[0]] = entity.split("=")[1]
29
+ if args.first
30
+ args.first.each do |key, value|
31
+ params += " #{key}=#{value}"
39
32
  end
40
- current_data.delete("error")
41
- current_data.delete("id")
42
- current_data.delete("msg")
43
-
44
- result << current_data
45
33
  end
46
- }
47
- result << {"id" => "0", "msg" => "ok"}
48
- result.delete({})
49
- result
50
- end
51
-
52
- private
53
34
 
54
- def connect(params)
55
- begin
56
- @connection = Net::Telnet::new("Host" => params[:address], "Port" => params[:port])
57
- @connection.waitfor("Match" => /TS3\n(.*)\n/,
58
- "Timeout" => 3)
59
- rescue
60
- raise ConnectionRefused, "server not available"
61
- end
62
-
63
- begin
64
- @connection.cmd("String" => "login client_login_name=#{params[:username]} client_login_password=#{params[:password]}\r",
35
+ @connection.cmd("String" => "#{meth}#{params}#{options}\r",
65
36
  "Match" => /error id=0 msg=ok\n/,
66
- "Timeout" => 3)
67
- rescue
68
- raise ConnectionRefused, "wrong user data"
37
+ "Timeout" => 3) { |data|
38
+ data.force_encoding 'UTF-8'
39
+ data.split("|").each do |current|
40
+ current_data = {}
41
+ current.split(" ").each do |entity|
42
+ key, value = entity.split "="
43
+ current_data[key] = value
44
+ end
45
+ current_data.delete("error")
46
+ current_data.delete("id")
47
+ current_data.delete("msg")
48
+
49
+ result << current_data
50
+ end
51
+ }
52
+ result << {"id" => "0", "msg" => "ok"}
53
+ result.delete({})
54
+ result
69
55
  end
70
56
  end
71
57
  end
72
-
73
- class QueryOptions
74
- def initialize
75
- @options = []
76
- end
77
-
78
- def method_missing(meth, *args, &block)
79
- options << meth.to_s
80
- end
81
-
82
- def options
83
- @options
84
- end
85
- end
86
-
87
- class ConnectionRefused < StandardError
88
- end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ts3query
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
5
- prerelease:
4
+ version: '0.6'
6
5
  platform: ruby
7
6
  authors:
8
7
  - TnT Web Solutions
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-29 00:00:00.000000000 Z
11
+ date: 2014-09-11 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Simple TS3 Query Library to connect to the query port of a teamspeak
15
14
  3 server.
@@ -18,40 +17,43 @@ executables: []
18
17
  extensions: []
19
18
  extra_rdoc_files: []
20
19
  files:
21
- - lib/ts3query/ts3_connection.rb
22
- - lib/ts3query.rb
23
- - features/connect_to_server.feature
24
- - features/run_command.feature
25
- - features/support/env.rb
26
- - features/step_definitions/run_command_steps.rb
27
- - features/step_definitions/connection_steps.rb
28
20
  - Gemfile
29
- - Rakefile
30
21
  - LICENSE.txt
31
22
  - README.rdoc
23
+ - Rakefile
24
+ - features/connect_to_server.feature
25
+ - features/run_command.feature
26
+ - features/step_definitions/connection_steps.rb
27
+ - features/step_definitions/run_command_steps.rb
28
+ - features/support/env.rb
32
29
  - init.rb
30
+ - lib/ts3query.rb
31
+ - lib/ts3query/client_connection.rb
32
+ - lib/ts3query/errors.rb
33
+ - lib/ts3query/query_options.rb
34
+ - lib/ts3query/server_connection.rb
35
+ - lib/ts3query/ts3_connection.rb
33
36
  homepage: https://github.com/tntwebsolutions/ts3query
34
37
  licenses: []
38
+ metadata: {}
35
39
  post_install_message:
36
40
  rdoc_options: []
37
41
  require_paths:
38
42
  - lib
39
43
  required_ruby_version: !ruby/object:Gem::Requirement
40
- none: false
41
44
  requirements:
42
- - - ! '>='
45
+ - - ">="
43
46
  - !ruby/object:Gem::Version
44
47
  version: '0'
45
48
  required_rubygems_version: !ruby/object:Gem::Requirement
46
- none: false
47
49
  requirements:
48
- - - ! '>='
50
+ - - ">="
49
51
  - !ruby/object:Gem::Version
50
52
  version: '0'
51
53
  requirements: []
52
54
  rubyforge_project:
53
- rubygems_version: 1.8.24
55
+ rubygems_version: 2.2.2
54
56
  signing_key:
55
- specification_version: 3
57
+ specification_version: 4
56
58
  summary: Simple TS3 Query Library.
57
59
  test_files: []