freec 0.2.5 → 0.2.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.
- data/Rakefile +6 -6
- data/lib/freec_base.rb +21 -8
- data/spec/freec_base_spec.rb +17 -0
- data/spec/spec_helper.rb +1 -1
- metadata +38 -63
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ end
|
|
9
9
|
|
10
10
|
spec = Gem::Specification.new do |s|
|
11
11
|
s.name = "freec"
|
12
|
-
s.version = '0.2.
|
12
|
+
s.version = '0.2.6'
|
13
13
|
s.author = "Jan Kubr"
|
14
14
|
s.email = "mail@jankubr.com"
|
15
15
|
s.homepage = "http://github.com/jankubr/freec"
|
@@ -24,19 +24,19 @@ spec = Gem::Specification.new do |s|
|
|
24
24
|
s.extra_rdoc_files = FileList["README*"].to_a
|
25
25
|
s.rdoc_options << '--line-numbers' << '--inline-source'
|
26
26
|
s.add_dependency "daemons"
|
27
|
-
s.add_development_dependency 'rspec'
|
27
|
+
s.add_development_dependency 'rspec', '> 2.0.1'
|
28
28
|
end
|
29
29
|
|
30
|
-
desc "Generate a gemspec file
|
30
|
+
desc "Generate a gemspec file"
|
31
31
|
task :gemspec do
|
32
32
|
File.open("#{spec.name}.gemspec", 'w') do |f|
|
33
33
|
f.write spec.to_ruby
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
require '
|
37
|
+
require 'rspec/core/rake_task'
|
38
38
|
|
39
39
|
desc "Run all specs"
|
40
|
-
|
41
|
-
t.
|
40
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
41
|
+
t.pattern = FileList['spec/**/*.rb']
|
42
42
|
end
|
data/lib/freec_base.rb
CHANGED
@@ -74,7 +74,7 @@ private
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def disconnect_notice?
|
77
|
-
call_vars[:content_type] == 'text/disconnect-notice'
|
77
|
+
@io.closed? || call_vars[:content_type] == 'text/disconnect-notice'
|
78
78
|
end
|
79
79
|
|
80
80
|
def callback(callback_name, *args)
|
@@ -152,8 +152,7 @@ private
|
|
152
152
|
def read_response_info
|
153
153
|
@response = ''
|
154
154
|
begin
|
155
|
-
|
156
|
-
@response += line
|
155
|
+
@response += read_line_from_io
|
157
156
|
end until @response[-2..-1] == "\n\n"
|
158
157
|
end
|
159
158
|
|
@@ -162,8 +161,7 @@ private
|
|
162
161
|
return if header_length == 0
|
163
162
|
header = ''
|
164
163
|
begin
|
165
|
-
|
166
|
-
header += line.to_s
|
164
|
+
header += read_line_from_io
|
167
165
|
end until header[-2..-1] == "\n\n"
|
168
166
|
@response += header
|
169
167
|
end
|
@@ -172,9 +170,8 @@ private
|
|
172
170
|
body_length = @response.sub(/^Content-Length.*^Content-Length: ([0-9]+)$.*/m, '\1').to_i
|
173
171
|
return if body_length == 0
|
174
172
|
body = ''
|
175
|
-
begin
|
176
|
-
|
177
|
-
body += line.to_s
|
173
|
+
begin
|
174
|
+
body += read_block_from_io(body_length)
|
178
175
|
end until body.length == body_length
|
179
176
|
@response += body
|
180
177
|
end
|
@@ -202,4 +199,20 @@ private
|
|
202
199
|
true
|
203
200
|
end
|
204
201
|
|
202
|
+
def read_line_from_io
|
203
|
+
line = @io.gets
|
204
|
+
raise io_disconnected_message unless line
|
205
|
+
line
|
206
|
+
end
|
207
|
+
|
208
|
+
def read_block_from_io(length)
|
209
|
+
block = @io.read(length)
|
210
|
+
raise io_disconnected_message unless block
|
211
|
+
block
|
212
|
+
end
|
213
|
+
|
214
|
+
def io_disconnected_message
|
215
|
+
"IO disconnected - FreeSWITCH crashed?"
|
216
|
+
end
|
217
|
+
|
205
218
|
end
|
data/spec/freec_base_spec.rb
CHANGED
@@ -59,6 +59,16 @@ describe Freec do
|
|
59
59
|
@io.should_receive(:gets).and_return(event_parts(EVENT)[0], event_parts(EVENT)[1])
|
60
60
|
@freec.send(:read_response)
|
61
61
|
end
|
62
|
+
|
63
|
+
it "raises exception if IO is disconnected while reading response info" do
|
64
|
+
@io.should_receive(:gets).and_return(nil)
|
65
|
+
lambda { @freec.send(:read_response) }.should raise_error(RuntimeError, 'IO disconnected - FreeSWITCH crashed?')
|
66
|
+
end
|
67
|
+
|
68
|
+
it "raises exception if IO is disconnected while reading event header" do
|
69
|
+
@io.should_receive(:gets).and_return(event_parts(EVENT)[0], nil)
|
70
|
+
lambda { @freec.send(:read_response) }.should raise_error(RuntimeError, 'IO disconnected - FreeSWITCH crashed?')
|
71
|
+
end
|
62
72
|
|
63
73
|
it "reads the full event with body" do
|
64
74
|
@io.should_receive(:gets).and_return(event_parts(EVENT_WITH_BODY)[0],
|
@@ -66,6 +76,13 @@ describe Freec do
|
|
66
76
|
@io.should_receive(:read).and_return(event_parts(EVENT_WITH_BODY)[2].strip.chomp)
|
67
77
|
@freec.send(:read_response)
|
68
78
|
end
|
79
|
+
|
80
|
+
it "raises exception if IO is disconnected while reading body" do
|
81
|
+
@io.should_receive(:gets).and_return(event_parts(EVENT_WITH_BODY)[0],
|
82
|
+
event_parts(EVENT_WITH_BODY)[1])
|
83
|
+
@io.should_receive(:read).and_return(nil)
|
84
|
+
lambda { @freec.send(:read_response) }.should raise_error(RuntimeError, 'IO disconnected - FreeSWITCH crashed?')
|
85
|
+
end
|
69
86
|
|
70
87
|
end
|
71
88
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,60 +1,45 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: freec
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 5
|
10
|
-
version: 0.2.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.6
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Jan Kubr
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: daemons
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70325537302580 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: rspec
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: *70325537302580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70325537302100 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>'
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.1
|
47
33
|
type: :development
|
48
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70325537302100
|
49
36
|
description:
|
50
37
|
email: mail@jankubr.com
|
51
38
|
executables: []
|
52
|
-
|
53
39
|
extensions: []
|
54
|
-
|
55
|
-
extra_rdoc_files:
|
40
|
+
extra_rdoc_files:
|
56
41
|
- README.rdoc
|
57
|
-
files:
|
42
|
+
files:
|
58
43
|
- README.rdoc
|
59
44
|
- Rakefile
|
60
45
|
- lib/call_variables.rb
|
@@ -70,40 +55,30 @@ files:
|
|
70
55
|
- spec/freec_base_spec.rb
|
71
56
|
- spec/freeswitch_applications_spec.rb
|
72
57
|
- spec/spec_helper.rb
|
73
|
-
has_rdoc: true
|
74
58
|
homepage: http://github.com/jankubr/freec
|
75
59
|
licenses: []
|
76
|
-
|
77
60
|
post_install_message:
|
78
|
-
rdoc_options:
|
61
|
+
rdoc_options:
|
79
62
|
- --line-numbers
|
80
63
|
- --inline-source
|
81
|
-
require_paths:
|
64
|
+
require_paths:
|
82
65
|
- lib
|
83
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
67
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
|
90
|
-
- 0
|
91
|
-
version: "0"
|
92
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
73
|
none: false
|
94
|
-
requirements:
|
95
|
-
- -
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
|
98
|
-
segments:
|
99
|
-
- 0
|
100
|
-
version: "0"
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
101
78
|
requirements: []
|
102
|
-
|
103
79
|
rubyforge_project: freec
|
104
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.8.10
|
105
81
|
signing_key:
|
106
82
|
specification_version: 3
|
107
83
|
summary: The layer between your Ruby voice app and FreeSWITCH.
|
108
84
|
test_files: []
|
109
|
-
|