segregate 0.3.1 → 0.3.2

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