hatetepe 0.2.0 → 0.2.1

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/lib/hatetepe/body.rb CHANGED
@@ -54,25 +54,27 @@ module Hatetepe
54
54
 
55
55
  def read(*args)
56
56
  sync
57
- rewind
58
57
  @io.read *args
59
58
  end
60
59
 
61
60
  def gets
62
61
  sync
63
- rewind
64
62
  @io.gets
65
63
  end
66
64
 
67
65
  def write(chunk)
68
66
  ret = @io.write chunk
69
- @receivers.each {|r| r.call chunk }
67
+ Fiber.new {
68
+ @receivers.each {|r| r.call chunk }
69
+ }.resume
70
70
  ret
71
71
  end
72
72
 
73
73
  def <<(chunk)
74
74
  ret = @io << chunk
75
- @receivers.each {|r| r.call chunk }
75
+ Fiber.new {
76
+ @receivers.each {|r| r.call chunk }
77
+ }.resume
76
78
  ret
77
79
  end
78
80
  end
@@ -42,6 +42,7 @@ module Hatetepe
42
42
  }
43
43
 
44
44
  p.on_message_complete = proc {
45
+ message.body.rewind
45
46
  message.body.close_write unless message.body.closed_write?
46
47
  event! :complete
47
48
  }
@@ -18,13 +18,15 @@ module Hatetepe
18
18
  "rack.input" => body,
19
19
  "REQUEST_METHOD" => verb.dup,
20
20
  "REQUEST_URI" => uri.dup
21
- }.tap {|h|
21
+ }.tap {|hsh|
22
22
  headers.each {|key, value|
23
- h["HTTP_#{key.upcase.gsub(/[^A-Z_]/, "_")}"] = value
23
+ key = key.upcase.gsub! /[^A-Z]/, "_"
24
+ key = "HTTP_#{key}" unless key =~ /^CONTENT_(TYPE|LENGTH)$/
25
+ hsh[key] = value
24
26
  }
25
-
26
- h["REQUEST_PATH"], qm, h["QUERY_STRING"] = uri.partition("?")
27
- h["PATH_INFO"], h["SCRIPT_NAME"] = h["REQUEST_PATH"].dup, ""
27
+
28
+ hsh["REQUEST_PATH"], qm, hsh["QUERY_STRING"] = uri.partition("?")
29
+ hsh["PATH_INFO"], hsh["SCRIPT_NAME"] = hsh["REQUEST_PATH"].dup, ""
28
30
  }
29
31
  end
30
32
  end
@@ -74,7 +74,7 @@ module Hatetepe
74
74
  e["stream.start"] = proc {|response|
75
75
  e.delete "stream.start"
76
76
  EM::Synchrony.sync previous if previous
77
- response[1]["Server"] = "hatetepe/#{VERSION}"
77
+ response[1]["Server"] = "hatetepe/#{Hatetepe::VERSION}"
78
78
  builder.response response[0..1]
79
79
  }
80
80
 
@@ -1,3 +1,3 @@
1
1
  module Hatetepe
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -29,5 +29,7 @@ module Rack
29
29
  }
30
30
  end
31
31
  end
32
+
33
+ register "hatetepe", Rack::Handler::Hatetepe
32
34
  end
33
35
  end
@@ -135,13 +135,6 @@ describe Hatetepe::Body do
135
135
  read.should be_true
136
136
  end
137
137
 
138
- it "rewinds the body" do
139
- body.succeed
140
-
141
- body.should_receive :rewind
142
- body.read
143
- end
144
-
145
138
  it "forwards to io#read" do
146
139
  body.succeed
147
140
  args, ret = [stub("arg#1"), stub("arg#2")], stub("ret")
@@ -162,13 +155,6 @@ describe Hatetepe::Body do
162
155
  read.should be_true
163
156
  end
164
157
 
165
- it "rewinds the body" do
166
- body.succeed
167
-
168
- body.should_receive :rewind
169
- body.gets
170
- end
171
-
172
158
  it "forwards to io#gets" do
173
159
  body.succeed
174
160
  ret = stub("ret")
@@ -207,6 +207,7 @@ describe Hatetepe::Parser do
207
207
 
208
208
  it "finishes the body" do
209
209
  parser.on_body {|body|
210
+ body.should_receive :rewind
210
211
  body.should_receive :close_write
211
212
  }
212
213
  do_request
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hatetepe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-06 00:00:00.000000000Z
12
+ date: 2011-09-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http_parser.rb
16
- requirement: &79236260 !ruby/object:Gem::Requirement
16
+ requirement: &73976140 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *79236260
24
+ version_requirements: *73976140
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &79148530 !ruby/object:Gem::Requirement
27
+ requirement: &73975870 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *79148530
35
+ version_requirements: *73975870
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-synchrony
38
- requirement: &79148130 !ruby/object:Gem::Requirement
38
+ requirement: &73975650 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *79148130
46
+ version_requirements: *73975650
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack
49
- requirement: &79147860 !ruby/object:Gem::Requirement
49
+ requirement: &73975440 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *79147860
57
+ version_requirements: *73975440
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: async-rack
60
- requirement: &79147580 !ruby/object:Gem::Requirement
60
+ requirement: &73975230 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *79147580
68
+ version_requirements: *73975230
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
- requirement: &79147180 !ruby/object:Gem::Requirement
71
+ requirement: &73975020 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *79147180
79
+ version_requirements: *73975020
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &79146740 !ruby/object:Gem::Requirement
82
+ requirement: &73974800 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *79146740
90
+ version_requirements: *73974800
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: fakefs
93
- requirement: &79146280 !ruby/object:Gem::Requirement
93
+ requirement: &73974590 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *79146280
101
+ version_requirements: *73974590
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: em-http-request
104
- requirement: &79145760 !ruby/object:Gem::Requirement
104
+ requirement: &73974330 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *79145760
112
+ version_requirements: *73974330
113
113
  description:
114
114
  email:
115
115
  - lars.gierth@gmail.com