teamspeak-ruby 1.0.5 → 1.0.6
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.
- checksums.yaml +4 -4
- data/lib/teamspeak-ruby/client.rb +45 -49
- data/lib/teamspeak-ruby/exceptions.rb +4 -2
- data/lib/teamspeak-ruby/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9cecd16ae10abd107bf8f9b49cc9bc46c9412f2
|
4
|
+
data.tar.gz: 80bf427a1277df9993d68ab8003f532199378a05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02c93f35ad458f72604b2df92adc9974be475e7b90b5887e3744ed68d1e9eff453e1d8ff722aedf10ee8cf45a0b199526c9a5beca8f3a1472af7f07b80a34581
|
7
|
+
data.tar.gz: 12bd82d09e6238b37559d3e3733964e1973885e7cf39b3376112d601f19a784b989380244ec152e14d168f56657b7dfbce55b3ed60bf6101514727b003a92475
|
@@ -9,10 +9,25 @@ module Teamspeak
|
|
9
9
|
# Length of time before flood_limit is reset in seconds. Default is 3
|
10
10
|
attr_writer(:flood_time)
|
11
11
|
|
12
|
+
# First is escaped char, second is real char.
|
13
|
+
SPECIAL_CHARS = [
|
14
|
+
['\\\\', '\\'],
|
15
|
+
['\\/', '/'],
|
16
|
+
['\\s', ' '],
|
17
|
+
['\\p', '|'],
|
18
|
+
['\\a', '\a'],
|
19
|
+
['\\b', '\b'],
|
20
|
+
['\\f', '\f'],
|
21
|
+
['\\n', '\n'],
|
22
|
+
['\\r', '\r'],
|
23
|
+
['\\t', '\t'],
|
24
|
+
['\\v', '\v']
|
25
|
+
].freeze
|
26
|
+
|
12
27
|
# Initializes Client
|
13
28
|
#
|
14
29
|
# connect('voice.domain.com', 88888)
|
15
|
-
def initialize(host = 'localhost', port =
|
30
|
+
def initialize(host = 'localhost', port = 10_011)
|
16
31
|
connect(host, port)
|
17
32
|
|
18
33
|
# Throttle commands by default unless connected to localhost
|
@@ -27,12 +42,13 @@ module Teamspeak
|
|
27
42
|
# Connects to a TeamSpeak 3 server
|
28
43
|
#
|
29
44
|
# connect('voice.domain.com', 88888)
|
30
|
-
def connect(host = 'localhost', port =
|
45
|
+
def connect(host = 'localhost', port = 10_011)
|
31
46
|
@sock = TCPSocket.new(host, port)
|
32
47
|
|
33
48
|
# Check if the response is the same as a normal teamspeak 3 server.
|
34
49
|
if @sock.gets.strip != 'TS3'
|
35
|
-
|
50
|
+
msg = 'Server is not responding as a normal TeamSpeak 3 server.'
|
51
|
+
raise InvalidServer, msg
|
36
52
|
end
|
37
53
|
|
38
54
|
# Remove useless text from the buffer.
|
@@ -49,9 +65,9 @@ module Teamspeak
|
|
49
65
|
#
|
50
66
|
# login('serveradmin', 'H8YlK1f9')
|
51
67
|
def login(user, pass)
|
52
|
-
command('login',
|
68
|
+
command('login', client_login_name: user, client_login_password: pass)
|
53
69
|
end
|
54
|
-
|
70
|
+
|
55
71
|
# Sends command to the TeamSpeak 3 server and returns the response
|
56
72
|
#
|
57
73
|
# command('use', {'sid' => 1}, '-away')
|
@@ -72,32 +88,30 @@ module Teamspeak
|
|
72
88
|
@sock.puts out
|
73
89
|
|
74
90
|
if cmd == 'servernotifyregister'
|
75
|
-
2.times {response += @sock.gets}
|
91
|
+
2.times { response += @sock.gets }
|
76
92
|
return parse_response(response)
|
77
93
|
end
|
78
94
|
|
79
|
-
|
95
|
+
loop do
|
80
96
|
response += @sock.gets
|
81
|
-
|
82
|
-
if response.index(' msg=')
|
83
|
-
break
|
84
|
-
end
|
97
|
+
|
98
|
+
break if response.index(' msg=')
|
85
99
|
end
|
86
100
|
|
87
101
|
# Array of commands that are expected to return as an array.
|
88
102
|
# Not sure - clientgetids
|
89
|
-
should_be_array =
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
103
|
+
should_be_array = %w(
|
104
|
+
bindinglist serverlist servergrouplist servergroupclientlist
|
105
|
+
servergroupsbyclientid servergroupclientlist logview channellist
|
106
|
+
channelfind channelgrouplist channelgrouppermlist channelpermlist
|
107
|
+
clientlist clientfind clientdblist clientdbfind channelclientpermlist
|
108
|
+
permissionlist permoverview privilegekeylist messagelist complainlist
|
109
|
+
banlist ftlist custominfo permfind
|
110
|
+
)
|
97
111
|
|
98
112
|
parsed_response = parse_response(response)
|
99
113
|
|
100
|
-
|
114
|
+
should_be_array.include?(cmd) ? parsed_response : parsed_response.first
|
101
115
|
end
|
102
116
|
|
103
117
|
def parse_response(response)
|
@@ -106,8 +120,8 @@ module Teamspeak
|
|
106
120
|
response.split('|').each do |key|
|
107
121
|
data = {}
|
108
122
|
|
109
|
-
key.split(' ').each do |
|
110
|
-
value =
|
123
|
+
key.split(' ').each do |inner_key|
|
124
|
+
value = inner_key.split('=', 2)
|
111
125
|
|
112
126
|
data[value[0]] = decode_param(value[1])
|
113
127
|
end
|
@@ -125,33 +139,17 @@ module Teamspeak
|
|
125
139
|
# Return as integer if possible
|
126
140
|
return param.to_i if param.to_i.to_s == param
|
127
141
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
param.gsub!('\\p', '|')
|
132
|
-
param.gsub!('\\a', '\a')
|
133
|
-
param.gsub!('\\b', '\b')
|
134
|
-
param.gsub!('\\f', '\f')
|
135
|
-
param.gsub!('\\n', '\n')
|
136
|
-
param.gsub!('\\r', '\r')
|
137
|
-
param.gsub!('\\t', '\t')
|
138
|
-
param.gsub!('\\v', '\v')
|
142
|
+
SPECIAL_CHARS.each do |pair|
|
143
|
+
param.gsub!(pair[0], pair[1])
|
144
|
+
end
|
139
145
|
|
140
146
|
param
|
141
147
|
end
|
142
148
|
|
143
149
|
def encode_param(param)
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
param.gsub!('|', '\\p')
|
148
|
-
param.gsub!('\a', '\\a')
|
149
|
-
param.gsub!('\b', '\\b')
|
150
|
-
param.gsub!('\f', '\\f')
|
151
|
-
param.gsub!('\n', '\\n')
|
152
|
-
param.gsub!('\r', '\\r')
|
153
|
-
param.gsub!('\t', '\\t')
|
154
|
-
param.gsub!('\v', '\\v')
|
150
|
+
SPECIAL_CHARS.each do |pair|
|
151
|
+
param.gsub!(pair[1], pair[0])
|
152
|
+
end
|
155
153
|
|
156
154
|
param
|
157
155
|
end
|
@@ -170,9 +168,7 @@ module Teamspeak
|
|
170
168
|
flood_time_reached = Time.now - @flood_timer < @flood_time
|
171
169
|
flood_limit_reached = @flood_current == @flood_limit
|
172
170
|
|
173
|
-
if flood_time_reached && flood_limit_reached
|
174
|
-
sleep(@flood_time)
|
175
|
-
end
|
171
|
+
sleep(@flood_time) if flood_time_reached && flood_limit_reached
|
176
172
|
|
177
173
|
if flood_limit_reached
|
178
174
|
# Reset flood protection
|
@@ -183,8 +179,8 @@ module Teamspeak
|
|
183
179
|
end
|
184
180
|
|
185
181
|
private(
|
186
|
-
|
187
|
-
|
182
|
+
:parse_response, :decode_param, :encode_param,
|
183
|
+
:check_response_error, :flood_control
|
188
184
|
)
|
189
185
|
end
|
190
186
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module Teamspeak
|
2
|
-
# Raised when the connected server does not respond as a normal
|
2
|
+
# Raised when the connected server does not respond as a normal
|
3
|
+
# TeamSpeak 3 would.
|
3
4
|
#
|
4
|
-
#
|
5
|
+
# msg = 'Server is not responding as a normal TeamSpeak 3 server.'
|
6
|
+
# raise InvalidServer, msg
|
5
7
|
class InvalidServer < StandardError; end
|
6
8
|
|
7
9
|
# Raised when the server returns an error code other than 0.
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamspeak-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Harrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2016-05-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.8'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.8'
|
13
27
|
description:
|
14
28
|
email: justin@pyrohail.com
|
15
29
|
executables: []
|
@@ -40,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
40
54
|
version: '0'
|
41
55
|
requirements: []
|
42
56
|
rubyforge_project:
|
43
|
-
rubygems_version: 2.
|
57
|
+
rubygems_version: 2.5.1
|
44
58
|
signing_key:
|
45
59
|
specification_version: 4
|
46
60
|
summary: Ruby interface for TeamSpeak 3's server query api.
|