punchblock 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/lib/punchblock/command/dial.rb +1 -1
- data/lib/punchblock/command/join.rb +4 -4
- data/lib/punchblock/command/unjoin.rb +4 -4
- data/lib/punchblock/command_node.rb +6 -2
- data/lib/punchblock/component/component_node.rb +2 -2
- data/lib/punchblock/component/output.rb +7 -7
- data/lib/punchblock/component/record.rb +2 -2
- data/lib/punchblock/connection/xmpp.rb +18 -9
- data/lib/punchblock/core_ext/blather/stanza.rb +1 -1
- data/lib/punchblock/event/active_speaker.rb +3 -3
- data/lib/punchblock/event/complete.rb +2 -2
- data/lib/punchblock/event/joined.rb +3 -3
- data/lib/punchblock/event/offer.rb +1 -1
- data/lib/punchblock/event/unjoined.rb +3 -3
- data/lib/punchblock/rayo_node.rb +3 -3
- data/lib/punchblock/translator/asterisk.rb +5 -5
- data/lib/punchblock/translator/asterisk/call.rb +8 -8
- data/lib/punchblock/translator/asterisk/component.rb +2 -2
- data/lib/punchblock/version.rb +1 -1
- data/spec/punchblock/command/dial_spec.rb +2 -2
- data/spec/punchblock/command/join_spec.rb +9 -9
- data/spec/punchblock/command/unjoin_spec.rb +5 -5
- data/spec/punchblock/command_node_spec.rb +3 -3
- data/spec/punchblock/component/input_spec.rb +3 -3
- data/spec/punchblock/component/output_spec.rb +17 -17
- data/spec/punchblock/component/record_spec.rb +7 -7
- data/spec/punchblock/connection/asterisk_spec.rb +1 -1
- data/spec/punchblock/connection/xmpp_spec.rb +45 -16
- data/spec/punchblock/event/complete_spec.rb +6 -6
- data/spec/punchblock/event/joined_spec.rb +6 -6
- data/spec/punchblock/event/started_speaking_spec.rb +4 -4
- data/spec/punchblock/event/stopped_speaking_spec.rb +4 -4
- data/spec/punchblock/event/unjoined_spec.rb +6 -6
- data/spec/punchblock/translator/asterisk/call_spec.rb +30 -30
- data/spec/punchblock/translator/asterisk/component/input_spec.rb +2 -2
- data/spec/punchblock/translator/asterisk/component_spec.rb +1 -1
- data/spec/punchblock/translator/asterisk_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -2
- metadata +39 -39
@@ -12,17 +12,17 @@ module Punchblock
|
|
12
12
|
describe "comparing for equality" do
|
13
13
|
subject do
|
14
14
|
Complete.new.tap do |c|
|
15
|
-
c.reason
|
16
|
-
c.
|
17
|
-
c.component_id
|
15
|
+
c.reason = Complete::Stop.new
|
16
|
+
c.target_call_id = '1234'
|
17
|
+
c.component_id = 'abcd'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
let :other_complete do
|
22
22
|
Complete.new.tap do |c|
|
23
|
-
c.reason
|
24
|
-
c.
|
25
|
-
c.component_id
|
23
|
+
c.reason = reason
|
24
|
+
c.target_call_id = call_id
|
25
|
+
c.component_id = component_id
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -18,16 +18,16 @@ module Punchblock
|
|
18
18
|
|
19
19
|
it_should_behave_like 'event'
|
20
20
|
|
21
|
-
its(:
|
22
|
-
its(:mixer_name)
|
23
|
-
its(:xmlns)
|
21
|
+
its(:call_id) { should be == 'b' }
|
22
|
+
its(:mixer_name) { should be == 'm' }
|
23
|
+
its(:xmlns) { should be == 'urn:xmpp:rayo:1' }
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "when setting options in initializer" do
|
27
|
-
subject { Joined.new :
|
27
|
+
subject { Joined.new :call_id => 'abc123', :mixer_name => 'blah' }
|
28
28
|
|
29
|
-
its(:
|
30
|
-
its(:mixer_name)
|
29
|
+
its(:call_id) { should be == 'abc123' }
|
30
|
+
its(:mixer_name) { should be == 'blah' }
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -20,16 +20,16 @@ module Punchblock
|
|
20
20
|
|
21
21
|
it_should_behave_like 'event'
|
22
22
|
|
23
|
-
its(:
|
24
|
-
its(:xmlns)
|
23
|
+
its(:call_id) { should be == "x0yz4ye-lx7-6ai9njwvw8nsb" }
|
24
|
+
its(:xmlns) { should be == 'urn:xmpp:rayo:1' }
|
25
25
|
end
|
26
26
|
|
27
27
|
describe "when setting options in initializer" do
|
28
28
|
subject do
|
29
|
-
StartedSpeaking.new :
|
29
|
+
StartedSpeaking.new :call_id => 'abc123'
|
30
30
|
end
|
31
31
|
|
32
|
-
its(:
|
32
|
+
its(:call_id) { should be == 'abc123' }
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -20,16 +20,16 @@ module Punchblock
|
|
20
20
|
|
21
21
|
it_should_behave_like 'event'
|
22
22
|
|
23
|
-
its(:
|
24
|
-
its(:xmlns)
|
23
|
+
its(:call_id) { should be == "x0yz4ye-lx7-6ai9njwvw8nsb" }
|
24
|
+
its(:xmlns) { should be == 'urn:xmpp:rayo:1' }
|
25
25
|
end
|
26
26
|
|
27
27
|
describe "when setting options in initializer" do
|
28
28
|
subject do
|
29
|
-
StoppedSpeaking.new :
|
29
|
+
StoppedSpeaking.new :call_id => 'abc123'
|
30
30
|
end
|
31
31
|
|
32
|
-
its(:
|
32
|
+
its(:call_id) { should be == 'abc123' }
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -18,16 +18,16 @@ module Punchblock
|
|
18
18
|
|
19
19
|
it_should_behave_like 'event'
|
20
20
|
|
21
|
-
its(:
|
22
|
-
its(:mixer_name)
|
23
|
-
its(:xmlns)
|
21
|
+
its(:call_id) { should be == 'b' }
|
22
|
+
its(:mixer_name) { should be == 'm' }
|
23
|
+
its(:xmlns) { should be == 'urn:xmpp:rayo:1' }
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "when setting options in initializer" do
|
27
|
-
subject { Unjoined.new :
|
27
|
+
subject { Unjoined.new :call_id => 'abc123', :mixer_name => 'blah' }
|
28
28
|
|
29
|
-
its(:
|
30
|
-
its(:mixer_name)
|
29
|
+
its(:call_id) { should be == 'abc123' }
|
30
|
+
its(:mixer_name) { should be == 'blah' }
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -84,7 +84,7 @@ module Punchblock
|
|
84
84
|
|
85
85
|
describe '#send_offer' do
|
86
86
|
it 'sends an offer to the translator' do
|
87
|
-
expected_offer = Punchblock::Event::Offer.new :
|
87
|
+
expected_offer = Punchblock::Event::Offer.new :target_call_id => subject.id,
|
88
88
|
:to => '1000',
|
89
89
|
:from => 'sip:5678',
|
90
90
|
:headers => sip_headers
|
@@ -101,7 +101,7 @@ module Punchblock
|
|
101
101
|
end
|
102
102
|
|
103
103
|
describe '#answer_if_not_answered' do
|
104
|
-
let(:answer_command) { Command::Answer.new }
|
104
|
+
let(:answer_command) { Command::Answer.new.tap { |a| a.request! } }
|
105
105
|
|
106
106
|
context "with a call that is already answered" do
|
107
107
|
it 'should not answer the call' do
|
@@ -153,7 +153,7 @@ module Punchblock
|
|
153
153
|
before { dial_command.request! }
|
154
154
|
|
155
155
|
it 'sends an Originate AMI action' do
|
156
|
-
expected_action = Punchblock::Component::Asterisk::AMI::Action.new
|
156
|
+
expected_action = Punchblock::Component::Asterisk::AMI::Action.new(:name => 'Originate',
|
157
157
|
:params => {
|
158
158
|
:async => true,
|
159
159
|
:application => 'AGI',
|
@@ -161,7 +161,7 @@ module Punchblock
|
|
161
161
|
:channel => 'SIP/1234',
|
162
162
|
:callerid => 'sip:foo@bar.com',
|
163
163
|
:variable => "punchblock_call_id=#{subject.id}"
|
164
|
-
}
|
164
|
+
}).tap { |a| a.request! }
|
165
165
|
|
166
166
|
translator.expects(:execute_global_command!).once.with expected_action
|
167
167
|
subject.dial dial_command
|
@@ -173,7 +173,7 @@ module Punchblock
|
|
173
173
|
end
|
174
174
|
|
175
175
|
it 'includes the timeout in the Originate AMI action' do
|
176
|
-
expected_action = Punchblock::Component::Asterisk::AMI::Action.new
|
176
|
+
expected_action = Punchblock::Component::Asterisk::AMI::Action.new(:name => 'Originate',
|
177
177
|
:params => {
|
178
178
|
:async => true,
|
179
179
|
:application => 'AGI',
|
@@ -182,7 +182,7 @@ module Punchblock
|
|
182
182
|
:callerid => 'sip:foo@bar.com',
|
183
183
|
:variable => "punchblock_call_id=#{subject.id}",
|
184
184
|
:timeout => 10000
|
185
|
-
}
|
185
|
+
}).tap { |a| a.request! }
|
186
186
|
|
187
187
|
translator.expects(:execute_global_command!).once.with expected_action
|
188
188
|
subject.dial dial_command
|
@@ -192,7 +192,7 @@ module Punchblock
|
|
192
192
|
it 'sends the call ID as a response to the Dial' do
|
193
193
|
subject.dial dial_command
|
194
194
|
dial_command.response
|
195
|
-
dial_command.
|
195
|
+
dial_command.target_call_id.should be == subject.id
|
196
196
|
end
|
197
197
|
|
198
198
|
it 'should make the call identify as outbound' do
|
@@ -241,7 +241,7 @@ module Punchblock
|
|
241
241
|
|
242
242
|
it 'should send an end (hangup) event to the translator' do
|
243
243
|
expected_end_event = Punchblock::Event::End.new :reason => :hangup,
|
244
|
-
:
|
244
|
+
:target_call_id => subject.id
|
245
245
|
translator.expects(:handle_pb_event!).with expected_end_event
|
246
246
|
subject.process_ami_event ami_event
|
247
247
|
end
|
@@ -253,7 +253,7 @@ module Punchblock
|
|
253
253
|
|
254
254
|
it 'should send an end (hangup) event to the translator' do
|
255
255
|
expected_end_event = Punchblock::Event::End.new :reason => :hangup,
|
256
|
-
:
|
256
|
+
:target_call_id => subject.id
|
257
257
|
translator.expects(:handle_pb_event!).with expected_end_event
|
258
258
|
subject.process_ami_event ami_event
|
259
259
|
end
|
@@ -265,7 +265,7 @@ module Punchblock
|
|
265
265
|
|
266
266
|
it 'should send an end (busy) event to the translator' do
|
267
267
|
expected_end_event = Punchblock::Event::End.new :reason => :busy,
|
268
|
-
:
|
268
|
+
:target_call_id => subject.id
|
269
269
|
translator.expects(:handle_pb_event!).with expected_end_event
|
270
270
|
subject.process_ami_event ami_event
|
271
271
|
end
|
@@ -281,7 +281,7 @@ module Punchblock
|
|
281
281
|
|
282
282
|
it 'should send an end (timeout) event to the translator' do
|
283
283
|
expected_end_event = Punchblock::Event::End.new :reason => :timeout,
|
284
|
-
:
|
284
|
+
:target_call_id => subject.id
|
285
285
|
translator.expects(:handle_pb_event!).with expected_end_event
|
286
286
|
subject.process_ami_event ami_event
|
287
287
|
end
|
@@ -299,7 +299,7 @@ module Punchblock
|
|
299
299
|
|
300
300
|
it 'should send an end (reject) event to the translator' do
|
301
301
|
expected_end_event = Punchblock::Event::End.new :reason => :reject,
|
302
|
-
:
|
302
|
+
:target_call_id => subject.id
|
303
303
|
translator.expects(:handle_pb_event!).with expected_end_event
|
304
304
|
subject.process_ami_event ami_event
|
305
305
|
end
|
@@ -351,7 +351,7 @@ module Punchblock
|
|
351
351
|
|
352
352
|
it 'should send an end (error) event to the translator' do
|
353
353
|
expected_end_event = Punchblock::Event::End.new :reason => :error,
|
354
|
-
:
|
354
|
+
:target_call_id => subject.id
|
355
355
|
translator.expects(:handle_pb_event!).with expected_end_event
|
356
356
|
subject.process_ami_event ami_event
|
357
357
|
end
|
@@ -406,7 +406,7 @@ module Punchblock
|
|
406
406
|
|
407
407
|
it 'should send a ringing event' do
|
408
408
|
expected_ringing = Punchblock::Event::Ringing.new
|
409
|
-
expected_ringing.
|
409
|
+
expected_ringing.target_call_id = subject.id
|
410
410
|
translator.expects(:handle_pb_event!).with expected_ringing
|
411
411
|
subject.process_ami_event ami_event
|
412
412
|
end
|
@@ -423,7 +423,7 @@ module Punchblock
|
|
423
423
|
|
424
424
|
it 'should send a ringing event' do
|
425
425
|
expected_answered = Punchblock::Event::Answered.new
|
426
|
-
expected_answered.
|
426
|
+
expected_answered.target_call_id = subject.id
|
427
427
|
translator.expects(:handle_pb_event!).with expected_answered
|
428
428
|
subject.process_ami_event ami_event
|
429
429
|
end
|
@@ -470,7 +470,7 @@ module Punchblock
|
|
470
470
|
let(:other_channel) { 'SIP/5678-00000000' }
|
471
471
|
let(:other_call_id) { 'def567' }
|
472
472
|
let :command do
|
473
|
-
Punchblock::Command::Join.new :
|
473
|
+
Punchblock::Command::Join.new :call_id => other_call_id
|
474
474
|
end
|
475
475
|
|
476
476
|
before do
|
@@ -530,8 +530,8 @@ module Punchblock
|
|
530
530
|
|
531
531
|
let :expected_joined do
|
532
532
|
Punchblock::Event::Joined.new.tap do |joined|
|
533
|
-
joined.
|
534
|
-
joined.
|
533
|
+
joined.target_call_id = subject.id
|
534
|
+
joined.call_id = other_call_id
|
535
535
|
end
|
536
536
|
end
|
537
537
|
|
@@ -551,8 +551,8 @@ module Punchblock
|
|
551
551
|
|
552
552
|
let :expected_unjoined do
|
553
553
|
Punchblock::Event::Unjoined.new.tap do |joined|
|
554
|
-
joined.
|
555
|
-
joined.
|
554
|
+
joined.target_call_id = subject.id
|
555
|
+
joined.call_id = other_call_id
|
556
556
|
end
|
557
557
|
end
|
558
558
|
|
@@ -607,8 +607,8 @@ module Punchblock
|
|
607
607
|
|
608
608
|
let :expected_unjoined do
|
609
609
|
Punchblock::Event::Unjoined.new.tap do |joined|
|
610
|
-
joined.
|
611
|
-
joined.
|
610
|
+
joined.target_call_id = subject.id
|
611
|
+
joined.call_id = other_call_id
|
612
612
|
end
|
613
613
|
end
|
614
614
|
|
@@ -762,16 +762,16 @@ module Punchblock
|
|
762
762
|
end
|
763
763
|
|
764
764
|
context "with a join command" do
|
765
|
-
let(:other_call_id)
|
766
|
-
let(:other_channel)
|
767
|
-
let(:other_translator)
|
765
|
+
let(:other_call_id) { "abc123" }
|
766
|
+
let(:other_channel) { 'SIP/bar' }
|
767
|
+
let(:other_translator) { stub_everything 'Translator::Asterisk' }
|
768
768
|
|
769
769
|
let :other_call do
|
770
770
|
Call.new other_channel, other_translator
|
771
771
|
end
|
772
772
|
|
773
773
|
let :command do
|
774
|
-
Punchblock::Command::Join.new :
|
774
|
+
Punchblock::Command::Join.new :call_id => other_call_id
|
775
775
|
end
|
776
776
|
|
777
777
|
it "executes the proper dialplan Bridge application" do
|
@@ -790,15 +790,15 @@ module Punchblock
|
|
790
790
|
end
|
791
791
|
|
792
792
|
context "with an unjoin command" do
|
793
|
-
let(:other_call_id)
|
794
|
-
let(:other_channel)
|
793
|
+
let(:other_call_id) { "abc123" }
|
794
|
+
let(:other_channel) { 'SIP/bar' }
|
795
795
|
|
796
796
|
let :other_call do
|
797
797
|
Call.new other_channel, translator
|
798
798
|
end
|
799
799
|
|
800
800
|
let :command do
|
801
|
-
Punchblock::Command::Unjoin.new :
|
801
|
+
Punchblock::Command::Unjoin.new :call_id => other_call_id
|
802
802
|
end
|
803
803
|
|
804
804
|
it "executes the unjoin through redirection" do
|
@@ -864,7 +864,7 @@ module Punchblock
|
|
864
864
|
ami_action.headers['Priority'].should be == Punchblock::Translator::Asterisk::REDIRECT_PRIORITY
|
865
865
|
ami_action.headers['Context'].should be == Punchblock::Translator::Asterisk::REDIRECT_CONTEXT
|
866
866
|
end
|
867
|
-
|
867
|
+
|
868
868
|
it "executes the proper AMI action with another call specified" do
|
869
869
|
subject.redirect_back other_call
|
870
870
|
ami_action = subject.wrapped_object.instance_variable_get(:'@current_ami_action')
|
@@ -96,7 +96,7 @@ module Punchblock
|
|
96
96
|
:utterance => '12',
|
97
97
|
:interpretation => 'dtmf-1 dtmf-2',
|
98
98
|
:component_id => subject.id,
|
99
|
-
:
|
99
|
+
:target_call_id => call.id
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should send a success complete event with the relevant data" do
|
@@ -112,7 +112,7 @@ module Punchblock
|
|
112
112
|
|
113
113
|
let :expected_event do
|
114
114
|
Punchblock::Component::Input::Complete::NoMatch.new :component_id => subject.id,
|
115
|
-
:
|
115
|
+
:target_call_id => call.id
|
116
116
|
end
|
117
117
|
|
118
118
|
it "should send a nomatch complete event" do
|
@@ -50,7 +50,7 @@ module Punchblock
|
|
50
50
|
it 'executes the call command' do
|
51
51
|
subject.wrapped_object.expects(:execute_call_command).with do |c|
|
52
52
|
c.should be command
|
53
|
-
c.
|
53
|
+
c.target_call_id.should be == call_id
|
54
54
|
end
|
55
55
|
subject.execute_command command, :call_id => call_id
|
56
56
|
end
|
@@ -111,7 +111,7 @@ module Punchblock
|
|
111
111
|
describe '#execute_call_command' do
|
112
112
|
let(:call_id) { 'abc123' }
|
113
113
|
let(:call) { Translator::Asterisk::Call.new 'SIP/foo', subject }
|
114
|
-
let(:command) { Command::Answer.new.tap { |c| c.
|
114
|
+
let(:command) { Command::Answer.new.tap { |c| c.target_call_id = call_id } }
|
115
115
|
|
116
116
|
before do
|
117
117
|
command.request!
|
data/spec/spec_helper.rb
CHANGED
@@ -33,8 +33,8 @@ end
|
|
33
33
|
|
34
34
|
# FIXME: change this to rayo_event? It can be ambigous
|
35
35
|
shared_examples_for 'event' do
|
36
|
-
its(:
|
37
|
-
its(:component_id)
|
36
|
+
its(:target_call_id) { should be == '9f00061' }
|
37
|
+
its(:component_id) { should be == '1' }
|
38
38
|
end
|
39
39
|
|
40
40
|
shared_examples_for 'command_headers' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: punchblock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-03-
|
14
|
+
date: 2012-03-30 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: niceogiri
|
18
|
-
requirement: &
|
18
|
+
requirement: &2151918560 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 0.0.4
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *2151918560
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: blather
|
29
|
-
requirement: &
|
29
|
+
requirement: &2151917300 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ! '>='
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 0.5.12
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *2151917300
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: activesupport
|
40
|
-
requirement: &
|
40
|
+
requirement: &2151916200 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 2.1.0
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *2151916200
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: state_machine
|
51
|
-
requirement: &
|
51
|
+
requirement: &2151915240 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 1.0.1
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *2151915240
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: future-resource
|
62
|
-
requirement: &
|
62
|
+
requirement: &2151926340 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 0.0.2
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *2151926340
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: has-guarded-handlers
|
73
|
-
requirement: &
|
73
|
+
requirement: &2151923420 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: 0.1.0
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *2151923420
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: celluloid
|
84
|
-
requirement: &
|
84
|
+
requirement: &2151921440 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: 0.9.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *2151921440
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: ruby_ami
|
95
|
-
requirement: &
|
95
|
+
requirement: &2151932640 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: 0.1.3
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *2151932640
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: ruby_speech
|
106
|
-
requirement: &
|
106
|
+
requirement: &2155995300 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: 0.5.1
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *2155995300
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: bundler
|
117
|
-
requirement: &
|
117
|
+
requirement: &2155999080 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ! '>='
|
@@ -122,10 +122,10 @@ dependencies:
|
|
122
122
|
version: 1.0.0
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *2155999080
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rspec
|
128
|
-
requirement: &
|
128
|
+
requirement: &2156017820 !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
131
|
- - ~>
|
@@ -133,10 +133,10 @@ dependencies:
|
|
133
133
|
version: 2.7.0
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
|
-
version_requirements: *
|
136
|
+
version_requirements: *2156017820
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
138
|
name: ci_reporter
|
139
|
-
requirement: &
|
139
|
+
requirement: &2156036260 !ruby/object:Gem::Requirement
|
140
140
|
none: false
|
141
141
|
requirements:
|
142
142
|
- - ! '>='
|
@@ -144,10 +144,10 @@ dependencies:
|
|
144
144
|
version: 1.6.3
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
|
-
version_requirements: *
|
147
|
+
version_requirements: *2156036260
|
148
148
|
- !ruby/object:Gem::Dependency
|
149
149
|
name: yard
|
150
|
-
requirement: &
|
150
|
+
requirement: &2156029000 !ruby/object:Gem::Requirement
|
151
151
|
none: false
|
152
152
|
requirements:
|
153
153
|
- - ~>
|
@@ -155,10 +155,10 @@ dependencies:
|
|
155
155
|
version: 0.6.0
|
156
156
|
type: :development
|
157
157
|
prerelease: false
|
158
|
-
version_requirements: *
|
158
|
+
version_requirements: *2156029000
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: rake
|
161
|
-
requirement: &
|
161
|
+
requirement: &2156042480 !ruby/object:Gem::Requirement
|
162
162
|
none: false
|
163
163
|
requirements:
|
164
164
|
- - ! '>='
|
@@ -166,10 +166,10 @@ dependencies:
|
|
166
166
|
version: '0'
|
167
167
|
type: :development
|
168
168
|
prerelease: false
|
169
|
-
version_requirements: *
|
169
|
+
version_requirements: *2156042480
|
170
170
|
- !ruby/object:Gem::Dependency
|
171
171
|
name: mocha
|
172
|
-
requirement: &
|
172
|
+
requirement: &2156036860 !ruby/object:Gem::Requirement
|
173
173
|
none: false
|
174
174
|
requirements:
|
175
175
|
- - ! '>='
|
@@ -177,10 +177,10 @@ dependencies:
|
|
177
177
|
version: '0'
|
178
178
|
type: :development
|
179
179
|
prerelease: false
|
180
|
-
version_requirements: *
|
180
|
+
version_requirements: *2156036860
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: i18n
|
183
|
-
requirement: &
|
183
|
+
requirement: &2155891280 !ruby/object:Gem::Requirement
|
184
184
|
none: false
|
185
185
|
requirements:
|
186
186
|
- - ! '>='
|
@@ -188,10 +188,10 @@ dependencies:
|
|
188
188
|
version: '0'
|
189
189
|
type: :development
|
190
190
|
prerelease: false
|
191
|
-
version_requirements: *
|
191
|
+
version_requirements: *2155891280
|
192
192
|
- !ruby/object:Gem::Dependency
|
193
193
|
name: countdownlatch
|
194
|
-
requirement: &
|
194
|
+
requirement: &2155887920 !ruby/object:Gem::Requirement
|
195
195
|
none: false
|
196
196
|
requirements:
|
197
197
|
- - ! '>='
|
@@ -199,10 +199,10 @@ dependencies:
|
|
199
199
|
version: '0'
|
200
200
|
type: :development
|
201
201
|
prerelease: false
|
202
|
-
version_requirements: *
|
202
|
+
version_requirements: *2155887920
|
203
203
|
- !ruby/object:Gem::Dependency
|
204
204
|
name: guard-rspec
|
205
|
-
requirement: &
|
205
|
+
requirement: &2156050140 !ruby/object:Gem::Requirement
|
206
206
|
none: false
|
207
207
|
requirements:
|
208
208
|
- - ! '>='
|
@@ -210,7 +210,7 @@ dependencies:
|
|
210
210
|
version: '0'
|
211
211
|
type: :development
|
212
212
|
prerelease: false
|
213
|
-
version_requirements: *
|
213
|
+
version_requirements: *2156050140
|
214
214
|
description: Like Rack is to Rails and Sinatra, Punchblock provides a consistent API
|
215
215
|
on top of several underlying third-party call control protocols.
|
216
216
|
email: punchblock@adhearsion.com
|
@@ -359,7 +359,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
359
359
|
version: '0'
|
360
360
|
segments:
|
361
361
|
- 0
|
362
|
-
hash:
|
362
|
+
hash: -3649265375268061365
|
363
363
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
364
364
|
none: false
|
365
365
|
requirements:
|