freec 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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.5'
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 for GitHub"
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 'spec/rake/spectask'
37
+ require 'rspec/core/rake_task'
38
38
 
39
39
  desc "Run all specs"
40
- Spec::Rake::SpecTask.new('spec') do |t|
41
- t.spec_files = FileList['spec/**/*.rb']
40
+ RSpec::Core::RakeTask.new(:spec) do |t|
41
+ t.pattern = FileList['spec/**/*.rb']
42
42
  end
@@ -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
- line = @io.gets.to_s
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
- line = @io.gets.to_s
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
- line = @io.read(body_length).to_s
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
@@ -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
 
@@ -1,5 +1,5 @@
1
1
  require 'rubygems'
2
- require 'spec'
2
+ require 'rspec'
3
3
 
4
4
  $:.unshift(File.join(File.dirname(__FILE__), "..", 'lib')).unshift(File.dirname(__FILE__)).
5
5
  unshift(File.join(File.dirname(__FILE__), 'data'))
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
- hash: 29
5
- prerelease: false
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
- date: 2010-10-28 00:00:00 +02:00
19
- default_executable:
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
- prerelease: false
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
- hash: 3
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 3
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
- version_requirements: *id002
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
- hash: 3
89
- segments:
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
- hash: 3
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.3.7
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
-