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 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
-