segregate 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96b4059a490bf0c58abeae11ab8c0540799a7ec6
4
- data.tar.gz: c1f1e6da2dc72b17051991272f1ddc34b9ef6737
3
+ metadata.gz: 650381fc8d34a02cc9c5a32f0a17d78063b4ff1b
4
+ data.tar.gz: 8d594fc4c8cd7602f43406aef2f10a4877a6a3e5
5
5
  SHA512:
6
- metadata.gz: 8e10f62346236a7a67782334697c5ee1c9d796c2b4187d29970e277a2aac414bd7c7fe679efefc97bfd00740db0c420e9295dab648bd9188e850f159e742faf4
7
- data.tar.gz: 3edd3f5888ce6a106ef259d4eb662ac4a5823cd0a126c21c1ce3c96d878e29da30a145d1135d555258b72c9e85abe7235c9c0f2b1b1ee0c9f5842331406b6c2d
6
+ metadata.gz: 786702d456df832d92e1be71e4dc0501dba0138a7d42a77509f38293631b8f762594d728aaa62d2e99b4cd253d3db08338fae0e1ae58f85458109d5ed36973b9
7
+ data.tar.gz: 969e1c8f52fc64d63506c918e6777ceedb405b3d3c99cde8904576adb712bfd71e1254d3b087ffde15db3f7162707732f17dfc8ba1ec91ea3b411684cfe914e4
@@ -1,4 +1,4 @@
1
1
  class Segregate
2
- VERSION = "0.3.1".freeze
3
- DATE = "2014-02-03".freeze
2
+ VERSION = "0.3.2".freeze
3
+ DATE = "2014-02-04".freeze
4
4
  end
data/lib/segregate.rb CHANGED
@@ -97,8 +97,9 @@ class Segregate
97
97
  @header_orders.each do |header|
98
98
  raw_message << "%s: %s\r\n" % [header, headers[header]]
99
99
  end
100
+ raw_message << "\r\n"
100
101
 
101
- raw_message << "\r\n" + @body + "\r\n\r\n"
102
+ raw_message << @body + "\r\n\r\n" unless @body.empty?
102
103
  end
103
104
 
104
105
  def parse data
@@ -107,10 +108,16 @@ class Segregate
107
108
  read_first_line data unless @first_line_complete
108
109
  read_headers data unless @headers_complete
109
110
  read_body data unless data.eof?
111
+
112
+ @callback.on_message_complete self if @callback.respond_to?(:on_message_complete) && @headers_complete && (no_body? || @body_complete)
110
113
  end
111
114
 
112
115
  private
113
116
 
117
+ def no_body?
118
+ (@headers['content-length'].nil? && @headers['content-encoding'].nil?)
119
+ end
120
+
114
121
  def read data, size = nil
115
122
  if size
116
123
  data.read(size + 2).chomp("\r\n")
@@ -171,8 +178,6 @@ class Segregate
171
178
  elsif headers['content-encoding'] == 'chunked'
172
179
  parse_chunked_data data
173
180
  end
174
-
175
- @callback.on_body_complete self if @callback.respond_to?(:on_body_complete) && @body_complete
176
181
  end
177
182
 
178
183
  def parse_body data
@@ -520,13 +520,19 @@ describe Segregate do
520
520
  end
521
521
  end
522
522
 
523
- describe 'on_body_complete' do
524
- it 'calls the callback object' do
525
- @callback_object.should_receive(:on_body_complete).with(@parser)
523
+ describe 'on_message_complete' do
524
+ it 'calls the callback object with a body' do
525
+ @callback_object.should_receive(:on_message_complete).with(@parser)
526
526
  @parser.parse "GET /endpoint HTTP/1.1\r\n"
527
527
  @parser.parse "Content-Length: 8\r\n\r\n"
528
528
  @parser.parse "TestData\r\n\r\n"
529
529
  end
530
+
531
+ it 'calls the callback object without a body' do
532
+ @callback_object.should_receive(:on_message_complete).with(@parser)
533
+ @parser.parse "GET /endpoint HTTP/1.1\r\n"
534
+ @parser.parse "host: www.google.com\r\n\r\n"
535
+ end
530
536
  end
531
537
  end
532
538
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: segregate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Slaughter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
11
+ date: 2014-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake