hatetepe 0.3.1 → 0.4.0

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.
Files changed (39) hide show
  1. data/README.md +21 -16
  2. data/hatetepe.gemspec +1 -2
  3. data/lib/hatetepe/body.rb +5 -3
  4. data/lib/hatetepe/builder.rb +6 -3
  5. data/lib/hatetepe/cli.rb +27 -5
  6. data/lib/hatetepe/client.rb +157 -82
  7. data/lib/hatetepe/client/keep_alive.rb +58 -0
  8. data/lib/hatetepe/client/pipeline.rb +19 -0
  9. data/lib/hatetepe/connection.rb +42 -0
  10. data/lib/hatetepe/deferred_status_fix.rb +11 -0
  11. data/lib/hatetepe/message.rb +4 -4
  12. data/lib/hatetepe/parser.rb +3 -4
  13. data/lib/hatetepe/request.rb +19 -6
  14. data/lib/hatetepe/response.rb +11 -3
  15. data/lib/hatetepe/server.rb +115 -85
  16. data/lib/hatetepe/{app.rb → server/app.rb} +7 -2
  17. data/lib/hatetepe/server/keep_alive.rb +61 -0
  18. data/lib/hatetepe/server/pipeline.rb +24 -0
  19. data/lib/hatetepe/{proxy.rb → server/proxy.rb} +5 -11
  20. data/lib/hatetepe/version.rb +1 -1
  21. data/lib/rack/handler/hatetepe.rb +1 -4
  22. data/spec/integration/cli/start_spec.rb +75 -123
  23. data/spec/integration/client/keep_alive_spec.rb +74 -0
  24. data/spec/integration/server/keep_alive_spec.rb +99 -0
  25. data/spec/spec_helper.rb +41 -16
  26. data/spec/unit/app_spec.rb +16 -5
  27. data/spec/unit/builder_spec.rb +4 -4
  28. data/spec/unit/client/pipeline_spec.rb +40 -0
  29. data/spec/unit/client_spec.rb +355 -199
  30. data/spec/unit/connection_spec.rb +64 -0
  31. data/spec/unit/parser_spec.rb +3 -2
  32. data/spec/unit/proxy_spec.rb +9 -18
  33. data/spec/unit/rack_handler_spec.rb +2 -12
  34. data/spec/unit/server_spec.rb +154 -60
  35. metadata +31 -36
  36. data/.rspec +0 -1
  37. data/.travis.yml +0 -3
  38. data/.yardopts +0 -1
  39. data/lib/hatetepe/pipeline.rb +0 -27
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.3.1
4
+ version: 0.4.0
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-11-05 00:00:00.000000000Z
12
+ date: 2012-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http_parser.rb
16
- requirement: &83959440 !ruby/object:Gem::Requirement
16
+ requirement: &86213170 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.5.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83959440
24
+ version_requirements: *86213170
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &83959120 !ruby/object:Gem::Requirement
27
+ requirement: &86212940 !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: *83959120
35
+ version_requirements: *86212940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-synchrony
38
- requirement: &83958600 !ruby/object:Gem::Requirement
38
+ requirement: &86212670 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *83958600
46
+ version_requirements: *86212670
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack
49
- requirement: &83958210 !ruby/object:Gem::Requirement
49
+ requirement: &86212370 !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: *83958210
57
+ version_requirements: *86212370
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: async-rack
60
- requirement: &83957590 !ruby/object:Gem::Requirement
60
+ requirement: &86212030 !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: *83957590
68
+ version_requirements: *86212030
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
- requirement: &83957070 !ruby/object:Gem::Requirement
71
+ requirement: &86211710 !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: *83957070
79
+ version_requirements: *86211710
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &83956480 !ruby/object:Gem::Requirement
82
+ requirement: &86211400 !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: *83956480
90
+ version_requirements: *86211400
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: fakefs
93
- requirement: &83956060 !ruby/object:Gem::Requirement
93
+ requirement: &86211060 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,18 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *83956060
102
- - !ruby/object:Gem::Dependency
103
- name: em-http-request
104
- requirement: &83955480 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: '1.0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: *83955480
101
+ version_requirements: *86211060
113
102
  description:
114
103
  email:
115
104
  - lars.gierth@gmail.com
@@ -118,9 +107,6 @@ executables:
118
107
  extensions: []
119
108
  extra_rdoc_files: []
120
109
  files:
121
- - .rspec
122
- - .travis.yml
123
- - .yardopts
124
110
  - Gemfile
125
111
  - LICENSE
126
112
  - README.md
@@ -128,27 +114,36 @@ files:
128
114
  - bin/hatetepe
129
115
  - hatetepe.gemspec
130
116
  - lib/hatetepe.rb
131
- - lib/hatetepe/app.rb
132
117
  - lib/hatetepe/body.rb
133
118
  - lib/hatetepe/builder.rb
134
119
  - lib/hatetepe/cli.rb
135
120
  - lib/hatetepe/client.rb
121
+ - lib/hatetepe/client/keep_alive.rb
122
+ - lib/hatetepe/client/pipeline.rb
123
+ - lib/hatetepe/connection.rb
124
+ - lib/hatetepe/deferred_status_fix.rb
136
125
  - lib/hatetepe/events.rb
137
126
  - lib/hatetepe/message.rb
138
127
  - lib/hatetepe/parser.rb
139
- - lib/hatetepe/pipeline.rb
140
- - lib/hatetepe/proxy.rb
141
128
  - lib/hatetepe/request.rb
142
129
  - lib/hatetepe/response.rb
143
130
  - lib/hatetepe/server.rb
131
+ - lib/hatetepe/server/app.rb
132
+ - lib/hatetepe/server/keep_alive.rb
133
+ - lib/hatetepe/server/pipeline.rb
134
+ - lib/hatetepe/server/proxy.rb
144
135
  - lib/hatetepe/version.rb
145
136
  - lib/rack/handler/hatetepe.rb
146
137
  - spec/integration/cli/start_spec.rb
138
+ - spec/integration/client/keep_alive_spec.rb
139
+ - spec/integration/server/keep_alive_spec.rb
147
140
  - spec/spec_helper.rb
148
141
  - spec/unit/app_spec.rb
149
142
  - spec/unit/body_spec.rb
150
143
  - spec/unit/builder_spec.rb
144
+ - spec/unit/client/pipeline_spec.rb
151
145
  - spec/unit/client_spec.rb
146
+ - spec/unit/connection_spec.rb
152
147
  - spec/unit/events_spec.rb
153
148
  - spec/unit/parser_spec.rb
154
149
  - spec/unit/proxy_spec.rb
@@ -174,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
169
  version: '0'
175
170
  requirements: []
176
171
  rubyforge_project:
177
- rubygems_version: 1.8.10
172
+ rubygems_version: 1.8.12
178
173
  signing_key:
179
174
  specification_version: 3
180
175
  summary: The HTTP toolkit
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
@@ -1,3 +0,0 @@
1
- rvm:
2
- - 1.9.2
3
- - 1.9.3
data/.yardopts DELETED
@@ -1 +0,0 @@
1
- - LICENSE
@@ -1,27 +0,0 @@
1
- module Hatetepe
2
- # TODO move specs from server_spec.rb to pipeline_spec.rb
3
- class Pipeline
4
- attr_reader :app
5
-
6
- def initialize(app)
7
- @app = app
8
- end
9
-
10
- def call(env)
11
- previous, request = env["hatetepe.connection"].requests.values_at(-2, -1)
12
- blocks = env.values_at("stream.start", "stream.close")
13
-
14
- env["stream.start"] = proc do |response|
15
- EM::Synchrony.sync previous if previous
16
- blocks[0].call response
17
- end
18
-
19
- env["stream.close"] = proc do
20
- blocks[1].call
21
- request.succeed
22
- end
23
-
24
- app.call env
25
- end
26
- end
27
- end