ts3query 0.4.2 → 0.5
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/lib/ts3query/ts3_connection.rb +19 -16
- metadata +1 -1
@@ -4,29 +4,31 @@ class TS3Connection
|
|
4
4
|
def initialize(params)
|
5
5
|
connect(params)
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
def disconnect
|
9
9
|
@connection.close
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def method_missing(meth, *args, &block)
|
13
13
|
result = []
|
14
14
|
options = ""
|
15
15
|
params = ""
|
16
|
-
|
16
|
+
|
17
17
|
if block
|
18
18
|
query_options = QueryOptions.new
|
19
19
|
yield query_options
|
20
|
-
|
20
|
+
|
21
21
|
query_options.options.each do |opt|
|
22
22
|
options += " -#{opt}"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
args.
|
27
|
-
|
26
|
+
if args.first
|
27
|
+
args.first.each do |key, value|
|
28
|
+
params += " #{key}=#{value}"
|
29
|
+
end
|
28
30
|
end
|
29
|
-
|
31
|
+
|
30
32
|
@connection.cmd("String" => "#{meth}#{params}#{options}\r",
|
31
33
|
"Match" => /error id=0 msg=ok\n/,
|
32
34
|
"Timeout" => 3) { |data|
|
@@ -38,7 +40,7 @@ class TS3Connection
|
|
38
40
|
current_data.delete("error")
|
39
41
|
current_data.delete("id")
|
40
42
|
current_data.delete("msg")
|
41
|
-
|
43
|
+
|
42
44
|
result << current_data
|
43
45
|
end
|
44
46
|
}
|
@@ -46,10 +48,10 @@ class TS3Connection
|
|
46
48
|
result.delete({})
|
47
49
|
result
|
48
50
|
end
|
49
|
-
|
51
|
+
|
50
52
|
private
|
51
|
-
|
52
|
-
def connect(params)
|
53
|
+
|
54
|
+
def connect(params)
|
53
55
|
begin
|
54
56
|
@connection = Net::Telnet::new("Host" => params[:address], "Port" => params[:port])
|
55
57
|
@connection.waitfor("Match" => /TS3\n(.*)\n/,
|
@@ -57,10 +59,11 @@ class TS3Connection
|
|
57
59
|
rescue
|
58
60
|
raise ConnectionRefused, "server not available"
|
59
61
|
end
|
60
|
-
|
62
|
+
|
61
63
|
begin
|
62
|
-
@connection.cmd("String"
|
63
|
-
"Match"
|
64
|
+
@connection.cmd("String" => "login client_login_name=#{params[:username]} client_login_password=#{params[:password]}\r",
|
65
|
+
"Match" => /error id=0 msg=ok\n/,
|
66
|
+
"Timeout" => 3)
|
64
67
|
rescue
|
65
68
|
raise ConnectionRefused, "wrong user data"
|
66
69
|
end
|
@@ -71,11 +74,11 @@ class QueryOptions
|
|
71
74
|
def initialize
|
72
75
|
@options = []
|
73
76
|
end
|
74
|
-
|
77
|
+
|
75
78
|
def method_missing(meth, *args, &block)
|
76
79
|
options << meth.to_s
|
77
80
|
end
|
78
|
-
|
81
|
+
|
79
82
|
def options
|
80
83
|
@options
|
81
84
|
end
|