ruby_fs 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -0
- data/lib/ruby_fs/stream.rb +18 -21
- data/lib/ruby_fs/version.rb +1 -1
- data/spec/ruby_fs/stream_spec.rb +19 -38
- metadata +4 -4
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# develop
|
2
2
|
|
3
|
+
# 0.3.0
|
4
|
+
* Feature/Change: Switch command methods from yielding the result asynchronously to returning it synchronously. Allows for better actor usage (async/futures)
|
5
|
+
|
3
6
|
# 0.2.0
|
4
7
|
* Feature: Common command helper methods
|
5
8
|
* Feature: Trace level logging & easy logging override
|
data/lib/ruby_fs/stream.rb
CHANGED
@@ -55,16 +55,17 @@ module RubyFS
|
|
55
55
|
# @param [#to_s] command the command to run
|
56
56
|
# @param [optional, Hash] options the command's options, where keys have _ substituted for -
|
57
57
|
#
|
58
|
-
# @
|
59
|
-
|
60
|
-
|
61
|
-
@command_callbacks << (
|
58
|
+
# @return [RubyFS::Response] response the command's response object
|
59
|
+
def command(command, options = {}, &callback)
|
60
|
+
uuid = SecureRandom.uuid
|
61
|
+
@command_callbacks << (callback || lambda { |reply| signal uuid, reply })
|
62
62
|
string = "#{command}\n"
|
63
63
|
options.each_pair do |key, value|
|
64
64
|
string << "#{key.to_s.gsub '_', '-'}: #{value}\n" if value
|
65
65
|
end
|
66
66
|
string << "\n"
|
67
67
|
send_data string
|
68
|
+
wait uuid unless callback
|
68
69
|
end
|
69
70
|
|
70
71
|
#
|
@@ -72,10 +73,9 @@ module RubyFS
|
|
72
73
|
#
|
73
74
|
# @param [#to_s] action the API action to execute
|
74
75
|
#
|
75
|
-
# @
|
76
|
-
|
77
|
-
|
78
|
-
command "api #{action}", &block
|
76
|
+
# @return [RubyFS::Response] response the command's response object
|
77
|
+
def api(action)
|
78
|
+
command "api #{action}"
|
79
79
|
end
|
80
80
|
|
81
81
|
#
|
@@ -83,10 +83,9 @@ module RubyFS
|
|
83
83
|
#
|
84
84
|
# @param [#to_s] action the API action to execute
|
85
85
|
#
|
86
|
-
# @
|
87
|
-
|
88
|
-
|
89
|
-
command "bgapi #{action}", &block
|
86
|
+
# @return [RubyFS::Response] response the command's response object
|
87
|
+
def bgapi(action)
|
88
|
+
command "bgapi #{action}"
|
90
89
|
end
|
91
90
|
|
92
91
|
#
|
@@ -95,10 +94,9 @@ module RubyFS
|
|
95
94
|
# @param [#to_s] call the call ID to send the message to
|
96
95
|
# @param [optional, Hash] options the message options
|
97
96
|
#
|
98
|
-
# @
|
99
|
-
|
100
|
-
|
101
|
-
command "SendMsg #{call}", options, &block
|
97
|
+
# @return [RubyFS::Response] response the message's response object
|
98
|
+
def sendmsg(call, options = {})
|
99
|
+
command "SendMsg #{call}", options
|
102
100
|
end
|
103
101
|
|
104
102
|
#
|
@@ -108,10 +106,9 @@ module RubyFS
|
|
108
106
|
# @param [#to_s] appname the app to execute
|
109
107
|
# @param [optional, String] options the application options
|
110
108
|
#
|
111
|
-
# @
|
112
|
-
|
113
|
-
|
114
|
-
sendmsg call, :call_command => 'execute', :execute_app_name => appname, :execute_app_arg => options, &block
|
109
|
+
# @return [RubyFS::Response] response the application's response object
|
110
|
+
def application(call, appname, options = nil)
|
111
|
+
sendmsg call, :call_command => 'execute', :execute_app_name => appname, :execute_app_arg => options
|
115
112
|
end
|
116
113
|
|
117
114
|
#
|
@@ -162,7 +159,7 @@ module RubyFS
|
|
162
159
|
@command_callbacks.pop.call CommandReply.new(headers)
|
163
160
|
when 'auth/request'
|
164
161
|
command "auth #{@secret}" do
|
165
|
-
command "event json ALL" if @events
|
162
|
+
command! "event json ALL" if @events
|
166
163
|
end
|
167
164
|
else
|
168
165
|
raise "Unknown request type received (#{headers.inspect})"
|
data/lib/ruby_fs/version.rb
CHANGED
data/spec/ruby_fs/stream_spec.rb
CHANGED
@@ -132,25 +132,11 @@ Content-Type: text/event-json
|
|
132
132
|
]
|
133
133
|
end
|
134
134
|
|
135
|
-
it "can send commands
|
135
|
+
it "can send commands and returns the response" do
|
136
136
|
expect_connected_event
|
137
137
|
expect_disconnected_event
|
138
|
-
|
139
|
-
|
140
|
-
mocked_server(1, lambda { |server| @stream.command('foo') { |reply| handler.call reply } }) do |val, server|
|
141
|
-
val.should == "foo\n\n"
|
142
|
-
server.send_data %Q(
|
143
|
-
Content-Type: command/reply
|
144
|
-
Reply-Text: +OK accepted
|
145
|
-
|
146
|
-
)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
it "can send commands without response callbacks" do
|
151
|
-
expect_connected_event
|
152
|
-
expect_disconnected_event
|
153
|
-
mocked_server(1, lambda { |server| @stream.command 'foo' }) do |val, server|
|
138
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
|
139
|
+
mocked_server(1, lambda { |server| @stream.command('foo').should == reply }) do |val, server|
|
154
140
|
val.should == "foo\n\n"
|
155
141
|
server.send_data %Q(
|
156
142
|
Content-Type: command/reply
|
@@ -163,7 +149,7 @@ Reply-Text: +OK accepted
|
|
163
149
|
it "can send commands with options" do
|
164
150
|
expect_connected_event
|
165
151
|
expect_disconnected_event
|
166
|
-
mocked_server(1, lambda { |server| @stream.command 'foo', :one => 1, :foo_bar => :doo_dah }) do |val, server|
|
152
|
+
mocked_server(1, lambda { |server| @stream.command! 'foo', :one => 1, :foo_bar => :doo_dah }) do |val, server|
|
167
153
|
val.should == %Q(foo
|
168
154
|
one: 1
|
169
155
|
foo-bar: doo_dah
|
@@ -172,12 +158,11 @@ foo-bar: doo_dah
|
|
172
158
|
end
|
173
159
|
end
|
174
160
|
|
175
|
-
it "can send API commands
|
161
|
+
it "can send API commands and returns the response" do
|
176
162
|
expect_connected_event
|
177
163
|
expect_disconnected_event
|
178
|
-
|
179
|
-
|
180
|
-
mocked_server(1, lambda { |server| @stream.api('foo') { |reply| handler.call reply } }) do |val, server|
|
164
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
|
165
|
+
mocked_server(1, lambda { |server| @stream.api('foo').should == reply }) do |val, server|
|
181
166
|
val.should == "api foo\n\n"
|
182
167
|
server.send_data %Q(
|
183
168
|
Content-Type: command/reply
|
@@ -187,12 +172,11 @@ Reply-Text: +OK accepted
|
|
187
172
|
end
|
188
173
|
end
|
189
174
|
|
190
|
-
it "can send background API commands
|
175
|
+
it "can send background API commands and returns the response" do
|
191
176
|
expect_connected_event
|
192
177
|
expect_disconnected_event
|
193
|
-
|
194
|
-
|
195
|
-
mocked_server(1, lambda { |server| @stream.bgapi('foo') { |reply| handler.call reply } }) do |val, server|
|
178
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK Job-UUID: 4e8344be-c1fe-11e1-a7bf-cf9911a69d1e', :job_uuid => '4e8344be-c1fe-11e1-a7bf-cf9911a69d1e')
|
179
|
+
mocked_server(1, lambda { |server| @stream.bgapi('foo').should == reply }) do |val, server|
|
196
180
|
val.should == "bgapi foo\n\n"
|
197
181
|
server.send_data %Q(
|
198
182
|
Content-Type: command/reply
|
@@ -203,12 +187,11 @@ Job-UUID: 4e8344be-c1fe-11e1-a7bf-cf9911a69d1e
|
|
203
187
|
end
|
204
188
|
end
|
205
189
|
|
206
|
-
it "can send messages to calls with options and response
|
190
|
+
it "can send messages to calls with options and returns the response" do
|
207
191
|
expect_connected_event
|
208
192
|
expect_disconnected_event
|
209
|
-
|
210
|
-
|
211
|
-
mocked_server(1, lambda { |server| @stream.sendmsg('aUUID', :call_command => 'execute') { |reply| handler.call reply } }) do |val, server|
|
193
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
|
194
|
+
mocked_server(1, lambda { |server| @stream.sendmsg('aUUID', :call_command => 'execute').should == reply }) do |val, server|
|
212
195
|
val.should == %Q(SendMsg aUUID
|
213
196
|
call-command: execute
|
214
197
|
|
@@ -221,12 +204,11 @@ Reply-Text: +OK accepted
|
|
221
204
|
end
|
222
205
|
end
|
223
206
|
|
224
|
-
it "can execute applications on calls without options
|
207
|
+
it "can execute applications on calls without options and returns the response" do
|
225
208
|
expect_connected_event
|
226
209
|
expect_disconnected_event
|
227
|
-
|
228
|
-
|
229
|
-
mocked_server(1, lambda { |server| @stream.application('aUUID', 'answer') { |reply| handler.call reply } }) do |val, server|
|
210
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
|
211
|
+
mocked_server(1, lambda { |server| @stream.application('aUUID', 'answer').should == reply }) do |val, server|
|
230
212
|
val.should == %Q(SendMsg aUUID
|
231
213
|
call-command: execute
|
232
214
|
execute-app-name: answer
|
@@ -240,12 +222,11 @@ Reply-Text: +OK accepted
|
|
240
222
|
end
|
241
223
|
end
|
242
224
|
|
243
|
-
it "can execute applications on calls with options and response
|
225
|
+
it "can execute applications on calls with options and returns the response" do
|
244
226
|
expect_connected_event
|
245
227
|
expect_disconnected_event
|
246
|
-
|
247
|
-
|
248
|
-
mocked_server(1, lambda { |server| @stream.application('aUUID', 'playback', '/tmp/test.wav') { |reply| handler.call reply } }) do |val, server|
|
228
|
+
reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
|
229
|
+
mocked_server(1, lambda { |server| @stream.application('aUUID', 'playback', '/tmp/test.wav').should == reply }) do |val, server|
|
249
230
|
val.should == %Q(SendMsg aUUID
|
250
231
|
call-command: execute
|
251
232
|
execute-app-name: playback
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_fs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: uuidtools
|
@@ -295,7 +295,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
295
295
|
version: '0'
|
296
296
|
segments:
|
297
297
|
- 0
|
298
|
-
hash:
|
298
|
+
hash: 1007735488205713228
|
299
299
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
300
300
|
none: false
|
301
301
|
requirements:
|
@@ -304,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
304
304
|
version: '0'
|
305
305
|
segments:
|
306
306
|
- 0
|
307
|
-
hash:
|
307
|
+
hash: 1007735488205713228
|
308
308
|
requirements: []
|
309
309
|
rubyforge_project: ruby_fs
|
310
310
|
rubygems_version: 1.8.24
|