mongrel_esi 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. data/README +10 -9
  2. data/doc/rdoc/classes/ESI/Cache.html +10 -10
  3. data/doc/rdoc/classes/ESI/Cache.src/{M000085.html → M000087.html} +0 -0
  4. data/doc/rdoc/classes/ESI/Cache.src/{M000086.html → M000088.html} +0 -0
  5. data/doc/rdoc/classes/ESI/Config.html +43 -62
  6. data/doc/rdoc/classes/ESI/Config.src/M000049.html +18 -0
  7. data/doc/rdoc/classes/ESI/Config.src/{M000059.html → M000050.html} +5 -5
  8. data/doc/rdoc/classes/ESI/Config.src/M000051.html +35 -0
  9. data/doc/rdoc/classes/ESI/Config.src/M000052.html +27 -5
  10. data/doc/rdoc/classes/ESI/Config.src/M000053.html +10 -5
  11. data/doc/rdoc/classes/ESI/Config.src/M000054.html +5 -22
  12. data/doc/rdoc/classes/ESI/Config.src/M000055.html +7 -25
  13. data/doc/rdoc/classes/ESI/Config.src/M000056.html +11 -10
  14. data/doc/rdoc/classes/ESI/Config/CacheConfig.html +25 -25
  15. data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000068.html → M000060.html} +6 -5
  16. data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000065.html → M000061.html} +5 -5
  17. data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000066.html → M000062.html} +4 -4
  18. data/doc/rdoc/classes/ESI/Config/CacheConfig.src/{M000067.html → M000063.html} +4 -4
  19. data/doc/rdoc/classes/ESI/Config/CacheConfig.src/M000064.html +5 -6
  20. data/doc/rdoc/classes/ESI/Config/ConfigRouter.html +15 -15
  21. data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000061.html → M000057.html} +5 -5
  22. data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000062.html → M000058.html} +7 -7
  23. data/doc/rdoc/classes/ESI/Config/ConfigRouter.src/{M000063.html → M000059.html} +7 -7
  24. data/doc/rdoc/classes/ESI/Dispatcher.html +17 -15
  25. data/doc/rdoc/classes/ESI/Dispatcher.src/{M000087.html → M000092.html} +4 -7
  26. data/doc/rdoc/classes/ESI/Dispatcher.src/M000093.html +27 -0
  27. data/doc/rdoc/classes/ESI/Fragment.html +15 -15
  28. data/doc/rdoc/classes/ESI/Fragment.src/{M000100.html → M000111.html} +0 -0
  29. data/doc/rdoc/classes/ESI/Fragment.src/{M000101.html → M000112.html} +0 -0
  30. data/doc/rdoc/classes/ESI/Fragment.src/{M000102.html → M000113.html} +0 -0
  31. data/doc/rdoc/classes/ESI/MemcachedCache.html +46 -46
  32. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000037.html +24 -0
  33. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000038.html +22 -0
  34. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000039.html +19 -0
  35. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000040.html +10 -11
  36. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000041.html +5 -9
  37. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000042.html +6 -6
  38. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000043.html +5 -10
  39. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000044.html +5 -5
  40. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000045.html +4 -6
  41. data/doc/rdoc/classes/ESI/OutputAdapter.html +204 -0
  42. data/doc/rdoc/classes/ESI/OutputAdapter.src/M000094.html +37 -0
  43. data/doc/rdoc/classes/ESI/OutputAdapter.src/M000095.html +18 -0
  44. data/doc/rdoc/classes/ESI/OutputAdapter.src/M000096.html +18 -0
  45. data/doc/rdoc/classes/ESI/OutputAdapter.src/M000097.html +18 -0
  46. data/doc/rdoc/classes/ESI/Parser.html +15 -15
  47. data/doc/rdoc/classes/ESI/Parser.src/{M000049.html → M000065.html} +0 -0
  48. data/doc/rdoc/classes/ESI/Parser.src/{M000050.html → M000066.html} +0 -0
  49. data/doc/rdoc/classes/ESI/Parser.src/{M000051.html → M000067.html} +0 -0
  50. data/doc/rdoc/classes/ESI/Processor.html +15 -15
  51. data/doc/rdoc/classes/ESI/Processor.src/{M000037.html → M000046.html} +0 -0
  52. data/doc/rdoc/classes/ESI/Processor.src/{M000038.html → M000047.html} +1 -1
  53. data/doc/rdoc/classes/ESI/Processor.src/{M000039.html → M000048.html} +0 -0
  54. data/doc/rdoc/classes/ESI/Proxy.html +48 -48
  55. data/doc/rdoc/classes/ESI/Proxy.src/M000071.html +7 -40
  56. data/doc/rdoc/classes/ESI/Proxy.src/M000072.html +50 -12
  57. data/doc/rdoc/classes/ESI/Proxy.src/M000073.html +49 -6
  58. data/doc/rdoc/classes/ESI/Proxy.src/M000074.html +11 -14
  59. data/doc/rdoc/classes/ESI/Proxy.src/M000075.html +6 -5
  60. data/doc/rdoc/classes/ESI/Proxy.src/M000076.html +9 -15
  61. data/doc/rdoc/classes/ESI/Proxy.src/M000077.html +5 -16
  62. data/doc/rdoc/classes/ESI/Proxy.src/M000078.html +28 -0
  63. data/doc/rdoc/classes/ESI/Proxy.src/M000079.html +29 -0
  64. data/doc/rdoc/classes/ESI/RackAdapter.html +214 -0
  65. data/doc/rdoc/classes/ESI/RackAdapter.src/M000068.html +18 -0
  66. data/doc/rdoc/classes/ESI/RackAdapter.src/M000069.html +34 -0
  67. data/doc/rdoc/classes/ESI/{MemcachedCache.src/M000048.html → RackAdapter.src/M000070.html} +4 -4
  68. data/doc/rdoc/classes/ESI/RackConfig.html +173 -0
  69. data/doc/rdoc/classes/ESI/RackConfig.src/M000089.html +28 -0
  70. data/doc/rdoc/classes/ESI/RackConfig.src/M000090.html +18 -0
  71. data/doc/rdoc/classes/ESI/RackConfig.src/M000091.html +20 -0
  72. data/doc/rdoc/classes/ESI/Request.html +158 -0
  73. data/doc/rdoc/classes/ESI/{MemcachedCache.src/M000046.html → Request.src/M000098.html} +5 -5
  74. data/doc/rdoc/classes/ESI/Request.src/M000099.html +18 -0
  75. data/doc/rdoc/classes/ESI/Response.html +36 -36
  76. data/doc/rdoc/classes/ESI/Response.src/M000080.html +10 -8
  77. data/doc/rdoc/classes/ESI/Response.src/M000081.html +5 -7
  78. data/doc/rdoc/classes/ESI/Response.src/M000082.html +8 -12
  79. data/doc/rdoc/classes/ESI/Response.src/M000083.html +7 -5
  80. data/doc/rdoc/classes/ESI/Response.src/M000084.html +12 -20
  81. data/doc/rdoc/classes/ESI/Response.src/{M000079.html → M000085.html} +5 -5
  82. data/doc/rdoc/classes/ESI/Response.src/M000086.html +33 -0
  83. data/doc/rdoc/classes/ESI/Router.html +10 -10
  84. data/doc/rdoc/classes/ESI/Router.src/{M000098.html → M000109.html} +0 -0
  85. data/doc/rdoc/classes/ESI/Router.src/{M000099.html → M000110.html} +0 -0
  86. data/doc/rdoc/classes/ESI/RubyCache.html +45 -45
  87. data/doc/rdoc/classes/ESI/RubyCache.src/{M000089.html → M000100.html} +6 -6
  88. data/doc/rdoc/classes/ESI/RubyCache.src/{M000090.html → M000101.html} +6 -6
  89. data/doc/rdoc/classes/ESI/RubyCache.src/{M000091.html → M000102.html} +6 -6
  90. data/doc/rdoc/classes/ESI/RubyCache.src/{M000092.html → M000103.html} +8 -8
  91. data/doc/rdoc/classes/ESI/RubyCache.src/{M000093.html → M000104.html} +4 -4
  92. data/doc/rdoc/classes/ESI/RubyCache.src/{M000094.html → M000105.html} +8 -8
  93. data/doc/rdoc/classes/ESI/RubyCache.src/{M000095.html → M000106.html} +4 -4
  94. data/doc/rdoc/classes/ESI/RubyCache.src/{M000096.html → M000107.html} +4 -4
  95. data/doc/rdoc/classes/ESI/RubyCache.src/{M000097.html → M000108.html} +4 -4
  96. data/doc/rdoc/classes/ESI/Tag.html +8 -8
  97. data/doc/rdoc/created.rid +1 -1
  98. data/doc/rdoc/files/COPYING.html +1 -1
  99. data/doc/rdoc/files/LICENSE.html +1 -1
  100. data/doc/rdoc/files/README.html +12 -10
  101. data/doc/rdoc/files/ext/esi/common_rl.html +1 -1
  102. data/doc/rdoc/files/ext/esi/esi_parser_c.html +1 -1
  103. data/doc/rdoc/files/ext/esi/parser_c.html +1 -1
  104. data/doc/rdoc/files/ext/esi/parser_h.html +1 -1
  105. data/doc/rdoc/files/ext/esi/parser_rl.html +122 -82
  106. data/doc/rdoc/files/ext/esi/test/test_c.html +1 -1
  107. data/doc/rdoc/files/lib/esi/cache_rb.html +2 -1
  108. data/doc/rdoc/files/lib/esi/config_rb.html +2 -1
  109. data/doc/rdoc/files/lib/esi/dispatcher_rb.html +3 -1
  110. data/doc/rdoc/files/lib/esi/invalidator_rb.html +1 -1
  111. data/doc/rdoc/files/lib/esi/logger_rb.html +1 -1
  112. data/doc/rdoc/files/lib/esi/parser_rb.html +1 -1
  113. data/doc/rdoc/files/lib/esi/processor_rb.html +1 -1
  114. data/doc/rdoc/files/lib/esi/proxy_rb.html +2 -2
  115. data/doc/rdoc/files/{ext/esi/test/parser_c.html → lib/esi/rack_adapter_rb.html} +21 -5
  116. data/doc/rdoc/files/lib/esi/response_rb.html +1 -1
  117. data/doc/rdoc/files/lib/esi/router_rb.html +1 -1
  118. data/doc/rdoc/files/lib/esi/tag/attempt_rb.html +1 -1
  119. data/doc/rdoc/files/lib/esi/tag/base_rb.html +1 -1
  120. data/doc/rdoc/files/lib/esi/tag/container_rb.html +1 -1
  121. data/doc/rdoc/files/lib/esi/tag/except_rb.html +1 -1
  122. data/doc/rdoc/files/lib/esi/tag/include_rb.html +1 -1
  123. data/doc/rdoc/files/lib/esi/tag/invalidate_rb.html +1 -1
  124. data/doc/rdoc/files/lib/esi/tag/try_rb.html +1 -1
  125. data/doc/rdoc/files/lib/esi/version_rb.html +1 -1
  126. data/doc/rdoc/files/lib/multi_dirhandler_rb.html +1 -1
  127. data/doc/rdoc/fr_class_index.html +4 -0
  128. data/doc/rdoc/fr_file_index.html +1 -5
  129. data/doc/rdoc/fr_method_index.html +87 -76
  130. data/ext/esi/esi_parser.c +2 -2
  131. data/ext/esi/parser.c +133 -107
  132. data/ext/esi/parser.h +9 -4
  133. data/ext/esi/parser.rl +99 -73
  134. data/ext/esi/test/test.c +11 -6
  135. data/lib/esi/cache.rb +7 -3
  136. data/lib/esi/config.rb +4 -8
  137. data/lib/esi/dispatcher.rb +14 -5
  138. data/lib/esi/processor.rb +1 -1
  139. data/lib/esi/proxy.rb +58 -48
  140. data/lib/esi/rack_adapter.rb +97 -0
  141. data/lib/esi/response.rb +30 -1
  142. data/lib/esi/version.rb +1 -1
  143. data/test/bench-plot.rb +31 -0
  144. data/test/benchmarks/csv-perf-serial0.4 +101 -0
  145. data/test/benchmarks/csv-perf-trunk +101 -0
  146. data/test/benchmarks/perf-serial0.4-n1000-c1.csv +101 -0
  147. data/test/benchmarks/perf-serial0.4-n1000-c2.csv +101 -0
  148. data/test/benchmarks/perf-serial0.4-n1000-c3.csv +101 -0
  149. data/test/benchmarks/perf-serial0.4-n1000-c4.csv +101 -0
  150. data/test/benchmarks/perf-serial0.4-n1000-c5.csv +101 -0
  151. data/test/benchmarks/perf-serial0.4-n1000-c6.csv +101 -0
  152. data/test/benchmarks/perf-serial0.4-n1000-c7.csv +101 -0
  153. data/test/benchmarks/perf-trunk-n1000-c1.csv +101 -0
  154. data/test/benchmarks/perf-trunk-n1000-c2.csv +101 -0
  155. data/test/benchmarks/perf-trunk-n1000-c3.csv +101 -0
  156. data/test/benchmarks/perf-trunk-n1000-c4.csv +101 -0
  157. data/test/benchmarks/perf-trunk-n1000-c5.csv +101 -0
  158. data/test/benchmarks/perf-trunk-n1000-c6.csv +101 -0
  159. data/test/benchmarks/perf-trunk-n1000-c7.csv +101 -0
  160. data/test/load_test.rb +5 -2
  161. data/test/load_test_ab.rb +9 -4
  162. metadata +261 -227
  163. data/doc/rdoc/classes/ESI/Config.src/M000057.html +0 -18
  164. data/doc/rdoc/classes/ESI/Config.src/M000058.html +0 -20
  165. data/doc/rdoc/classes/ESI/Config.src/M000060.html +0 -24
  166. data/doc/rdoc/classes/ESI/Dispatcher.src/M000088.html +0 -18
  167. data/doc/rdoc/classes/ESI/MemcachedCache.src/M000047.html +0 -18
  168. data/doc/rdoc/classes/ESI/Proxy.src/M000069.html +0 -20
  169. data/doc/rdoc/classes/ESI/Proxy.src/M000070.html +0 -55
  170. data/doc/rdoc/classes/ESI/Response.src/M000078.html +0 -23
  171. data/doc/rdoc/files/ext/esi/test/common_rl.html +0 -160
  172. data/doc/rdoc/files/ext/esi/test/parser_h.html +0 -101
  173. data/doc/rdoc/files/ext/esi/test/parser_rl.html +0 -827
  174. data/doc/rdoc/files/ext/esi/test/sp_c.html +0 -101
  175. data/ext/esi/test/common.rl +0 -46
  176. data/ext/esi/test/parser.c +0 -1875
  177. data/ext/esi/test/parser.h +0 -120
  178. data/ext/esi/test/parser.rl +0 -585
  179. data/ext/esi/test/sp.c +0 -125
@@ -38,7 +38,7 @@
38
38
  47: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;\n#{e.message}: #{e.backtrace.join(&quot;\n&quot;)}\n&quot;</span>
39
39
  48: <span class="ruby-keyword kw">ensure</span>
40
40
  49: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-value str">&quot;0\r\n\r\n&quot;</span> )
41
- 50: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span>
41
+ 50: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
42
42
  51: <span class="ruby-keyword kw">end</span></pre>
43
43
  </body>
44
44
  </html>
@@ -86,15 +86,15 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000077">copy_headers</a>&nbsp;&nbsp;
90
- <a href="#M000076">http_params</a>&nbsp;&nbsp;
91
- <a href="#M000069">new</a>&nbsp;&nbsp;
92
- <a href="#M000070">process</a>&nbsp;&nbsp;
93
- <a href="#M000072">proxy_direct</a>&nbsp;&nbsp;
94
- <a href="#M000073">proxy_filter_esi</a>&nbsp;&nbsp;
95
- <a href="#M000075">read_status</a>&nbsp;&nbsp;
96
- <a href="#M000074">send_esi_buffered</a>&nbsp;&nbsp;
97
- <a href="#M000071">send_response</a>&nbsp;&nbsp;
89
+ <a href="#M000079">copy_headers</a>&nbsp;&nbsp;
90
+ <a href="#M000078">http_params</a>&nbsp;&nbsp;
91
+ <a href="#M000071">new</a>&nbsp;&nbsp;
92
+ <a href="#M000072">process</a>&nbsp;&nbsp;
93
+ <a href="#M000074">proxy_direct</a>&nbsp;&nbsp;
94
+ <a href="#M000075">proxy_filter_esi</a>&nbsp;&nbsp;
95
+ <a href="#M000077">read_status</a>&nbsp;&nbsp;
96
+ <a href="#M000076">send_esi_buffered</a>&nbsp;&nbsp;
97
+ <a href="#M000073">send_response</a>&nbsp;&nbsp;
98
98
  </div>
99
99
  </div>
100
100
 
@@ -159,12 +159,12 @@
159
159
  <div id="methods">
160
160
  <h3 class="section-bar">Public Class methods</h3>
161
161
 
162
- <div id="method-M000069" class="method-detail">
163
- <a name="M000069"></a>
162
+ <div id="method-M000071" class="method-detail">
163
+ <a name="M000071"></a>
164
164
 
165
165
  <div class="method-heading">
166
- <a href="Proxy.src/M000069.html" target="Code" class="method-signature"
167
- onclick="popupCode('Proxy.src/M000069.html');return false;">
166
+ <a href="Proxy.src/M000071.html" target="Code" class="method-signature"
167
+ onclick="popupCode('Proxy.src/M000071.html');return false;">
168
168
  <span class="method-name">new</span><span class="method-args">( config )</span>
169
169
  </a>
170
170
  </div>
@@ -175,13 +175,13 @@
175
175
 
176
176
  <h3 class="section-bar">Public Instance methods</h3>
177
177
 
178
- <div id="method-M000070" class="method-detail">
179
- <a name="M000070"></a>
178
+ <div id="method-M000072" class="method-detail">
179
+ <a name="M000072"></a>
180
180
 
181
181
  <div class="method-heading">
182
- <a href="Proxy.src/M000070.html" target="Code" class="method-signature"
183
- onclick="popupCode('Proxy.src/M000070.html');return false;">
184
- <span class="method-name">process</span><span class="method-args">(request, response)</span>
182
+ <a href="Proxy.src/M000072.html" target="Code" class="method-signature"
183
+ onclick="popupCode('Proxy.src/M000072.html');return false;">
184
+ <span class="method-name">process</span><span class="method-args">(url, request, response)</span>
185
185
  </a>
186
186
  </div>
187
187
 
@@ -191,12 +191,12 @@
191
191
 
192
192
  <h3 class="section-bar">Protected Instance methods</h3>
193
193
 
194
- <div id="method-M000077" class="method-detail">
195
- <a name="M000077"></a>
194
+ <div id="method-M000079" class="method-detail">
195
+ <a name="M000079"></a>
196
196
 
197
197
  <div class="method-heading">
198
- <a href="Proxy.src/M000077.html" target="Code" class="method-signature"
199
- onclick="popupCode('Proxy.src/M000077.html');return false;">
198
+ <a href="Proxy.src/M000079.html" target="Code" class="method-signature"
199
+ onclick="popupCode('Proxy.src/M000079.html');return false;">
200
200
  <span class="method-name">copy_headers</span><span class="method-args">(response)</span>
201
201
  </a>
202
202
  </div>
@@ -205,12 +205,12 @@
205
205
  </div>
206
206
  </div>
207
207
 
208
- <div id="method-M000076" class="method-detail">
209
- <a name="M000076"></a>
208
+ <div id="method-M000078" class="method-detail">
209
+ <a name="M000078"></a>
210
210
 
211
211
  <div class="method-heading">
212
- <a href="Proxy.src/M000076.html" target="Code" class="method-signature"
213
- onclick="popupCode('Proxy.src/M000076.html');return false;">
212
+ <a href="Proxy.src/M000078.html" target="Code" class="method-signature"
213
+ onclick="popupCode('Proxy.src/M000078.html');return false;">
214
214
  <span class="method-name">http_params</span><span class="method-args">(params)</span>
215
215
  </a>
216
216
  </div>
@@ -219,13 +219,13 @@
219
219
  </div>
220
220
  </div>
221
221
 
222
- <div id="method-M000072" class="method-detail">
223
- <a name="M000072"></a>
222
+ <div id="method-M000074" class="method-detail">
223
+ <a name="M000074"></a>
224
224
 
225
225
  <div class="method-heading">
226
- <a href="Proxy.src/M000072.html" target="Code" class="method-signature"
227
- onclick="popupCode('Proxy.src/M000072.html');return false;">
228
- <span class="method-name">proxy_direct</span><span class="method-args">( http_response, status, proxy_response )</span>
226
+ <a href="Proxy.src/M000074.html" target="Code" class="method-signature"
227
+ onclick="popupCode('Proxy.src/M000074.html');return false;">
228
+ <span class="method-name">proxy_direct</span><span class="method-args">( http_response, proxy_response )</span>
229
229
  </a>
230
230
  </div>
231
231
 
@@ -233,12 +233,12 @@
233
233
  </div>
234
234
  </div>
235
235
 
236
- <div id="method-M000073" class="method-detail">
237
- <a name="M000073"></a>
236
+ <div id="method-M000075" class="method-detail">
237
+ <a name="M000075"></a>
238
238
 
239
239
  <div class="method-heading">
240
- <a href="Proxy.src/M000073.html" target="Code" class="method-signature"
241
- onclick="popupCode('Proxy.src/M000073.html');return false;">
240
+ <a href="Proxy.src/M000075.html" target="Code" class="method-signature"
241
+ onclick="popupCode('Proxy.src/M000075.html');return false;">
242
242
  <span class="method-name">proxy_filter_esi</span><span class="method-args">( http_request, http_response, http_params, proxy_response )</span>
243
243
  </a>
244
244
  </div>
@@ -247,12 +247,12 @@
247
247
  </div>
248
248
  </div>
249
249
 
250
- <div id="method-M000075" class="method-detail">
251
- <a name="M000075"></a>
250
+ <div id="method-M000077" class="method-detail">
251
+ <a name="M000077"></a>
252
252
 
253
253
  <div class="method-heading">
254
- <a href="Proxy.src/M000075.html" target="Code" class="method-signature"
255
- onclick="popupCode('Proxy.src/M000075.html');return false;">
254
+ <a href="Proxy.src/M000077.html" target="Code" class="method-signature"
255
+ onclick="popupCode('Proxy.src/M000077.html');return false;">
256
256
  <span class="method-name">read_status</span><span class="method-args">(response)</span>
257
257
  </a>
258
258
  </div>
@@ -261,13 +261,13 @@
261
261
  </div>
262
262
  </div>
263
263
 
264
- <div id="method-M000074" class="method-detail">
265
- <a name="M000074"></a>
264
+ <div id="method-M000076" class="method-detail">
265
+ <a name="M000076"></a>
266
266
 
267
267
  <div class="method-heading">
268
- <a href="Proxy.src/M000074.html" target="Code" class="method-signature"
269
- onclick="popupCode('Proxy.src/M000074.html');return false;">
270
- <span class="method-name">send_esi_buffered</span><span class="method-args">( status, response, request, http_params, buffer )</span>
268
+ <a href="Proxy.src/M000076.html" target="Code" class="method-signature"
269
+ onclick="popupCode('Proxy.src/M000076.html');return false;">
270
+ <span class="method-name">send_esi_buffered</span><span class="method-args">( response, request, http_params, buffer )</span>
271
271
  </a>
272
272
  </div>
273
273
 
@@ -275,12 +275,12 @@
275
275
  </div>
276
276
  </div>
277
277
 
278
- <div id="method-M000071" class="method-detail">
279
- <a name="M000071"></a>
278
+ <div id="method-M000073" class="method-detail">
279
+ <a name="M000073"></a>
280
280
 
281
281
  <div class="method-heading">
282
- <a href="Proxy.src/M000071.html" target="Code" class="method-signature"
283
- onclick="popupCode('Proxy.src/M000071.html');return false;">
282
+ <a href="Proxy.src/M000073.html" target="Code" class="method-signature"
283
+ onclick="popupCode('Proxy.src/M000073.html');return false;">
284
284
  <span class="method-name">send_response</span><span class="method-args">( http_request, http_response, http_params, proxy_response )</span>
285
285
  </a>
286
286
  </div>
@@ -5,49 +5,16 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>send_response (ESI::Proxy)</title>
8
+ <title>new (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 69</span>
14
- 69: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_response</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
15
- 70: <span class="ruby-identifier">status</span> = <span class="ruby-identifier">read_status</span>( <span class="ruby-identifier">proxy_response</span> )
16
- 71:
17
- 72: <span class="ruby-identifier">headers</span> = <span class="ruby-identifier">copy_headers</span>( <span class="ruby-identifier">proxy_response</span> )
18
- 73:
19
- 74: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Surrogate-Control&quot;</span>]
20
- 75: <span class="ruby-ivar">@control</span> = {}
21
- 76: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Surrogate-Control&quot;</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pair</span><span class="ruby-operator">|</span>
22
- 77: <span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span> = <span class="ruby-identifier">pair</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>)
23
- 78: <span class="ruby-ivar">@control</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
24
- 79: <span class="ruby-keyword kw">end</span>
25
- 80: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
26
- 81: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
27
- 82: <span class="ruby-keyword kw">end</span>
28
- 83: <span class="ruby-keyword kw">end</span>
29
- 84:
30
- 85:
31
- 86: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">500</span> <span class="ruby-keyword kw">or</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@config</span>.<span class="ruby-identifier">enable_esi_processor?</span>( <span class="ruby-identifier">proxy_response</span> )
32
- 87: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
33
- 88: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
34
- 89: <span class="ruby-keyword kw">end</span>
35
- 90: <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">proxy_response</span> )
36
- 91: <span class="ruby-keyword kw">else</span>
37
- 92: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">&quot;HTTP_VERSION&quot;</span>].<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/1.0/</span>)
38
- 93: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span>
39
- 94: <span class="ruby-identifier">bytes</span>=<span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">status</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">buffer</span> )
40
- 95: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
41
- 96: [<span class="ruby-value">0</span>,<span class="ruby-identifier">bytes</span>]
42
- 97: <span class="ruby-keyword kw">else</span>
43
- 98: <span class="ruby-identifier">header</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">STATUS_FORMAT</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">status</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_STATUS_CODES</span>[<span class="ruby-identifier">status</span>]]
44
- 99: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">header</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{k}: #{v}\r\n&quot;</span> }
45
- 100: <span class="ruby-identifier">header</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;Transfer-Encoding: chunked\r\n\r\n&quot;</span>
46
- 101: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
47
- 102: <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
48
- 103: <span class="ruby-keyword kw">end</span>
49
- 104: <span class="ruby-keyword kw">end</span>
50
- 105:
51
- 106: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 21</span>
14
+ 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">config</span> )
15
+ 22: <span class="ruby-ivar">@config</span> = <span class="ruby-identifier">config</span>
16
+ 23: <span class="ruby-ivar">@router</span> = <span class="ruby-identifier">config</span>.<span class="ruby-identifier">router</span>
17
+ 24: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-keyword kw">nil</span>
18
+ 25: <span class="ruby-keyword kw">end</span></pre>
52
19
  </body>
53
20
  </html>
@@ -5,21 +5,59 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>proxy_direct (ESI::Proxy)</title>
8
+ <title>process (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 108</span>
14
- 108: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">proxy_response</span> )
15
- 109: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-value">0</span>
16
- 110: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">status</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">head</span>,<span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
17
- 111: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">fragment</span><span class="ruby-operator">|</span>
18
- 112: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">fragment</span>
19
- 113: <span class="ruby-identifier">bytes_sent</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">fragment</span>.<span class="ruby-identifier">size</span>
20
- 114: <span class="ruby-keyword kw">end</span>
21
- 115: <span class="ruby-keyword kw">end</span>
22
- 116: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>,<span class="ruby-identifier">bytes_sent</span>]
23
- 117: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 27</span>
14
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
15
+ 28:
16
+ 29: <span class="ruby-identifier">status</span> = <span class="ruby-value">200</span>
17
+ 30:
18
+ 31: <span class="ruby-identifier">http_params</span> = <span class="ruby-identifier">http_params</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>)
19
+ 32:
20
+ 33: <span class="ruby-identifier">chunk_count</span> = <span class="ruby-value">0</span>
21
+ 34: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-value">0</span>
22
+ 35: <span class="ruby-identifier">sent_from_cache</span> = <span class="ruby-keyword kw">false</span>
23
+ 36: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">url</span>)
24
+ 37:
25
+ 38: <span class="ruby-identifier">path_with_query</span> = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">query</span> <span class="ruby-value">? </span><span class="ruby-node">&quot;#{uri.path}?#{uri.query}&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">path</span>
26
+ 39:
27
+ 40: <span class="ruby-comment cmt"># check if the origin is cached</span>
28
+ 41: <span class="ruby-identifier">cached_page</span> = <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">get</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> )
29
+ 42: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cached_page</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">cached_page</span>.<span class="ruby-identifier">valid?</span>
30
+ 43: <span class="ruby-identifier">cache_buffer</span> = <span class="ruby-identifier">cached_page</span>.<span class="ruby-identifier">body</span>
31
+ 44: <span class="ruby-identifier">head</span>, <span class="ruby-identifier">body</span> = <span class="ruby-identifier">cache_buffer</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;\r\n\r\n&quot;</span>)
32
+ 45: <span class="ruby-identifier">buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
33
+ 46: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">buffer</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">body</span> )
34
+ 47: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">rewind</span>
35
+ 48: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span>
36
+ 49: <span class="ruby-comment cmt">#puts bytes_sent.inspect</span>
37
+ 50: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">head</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/Content-Length:.*$/</span>,<span class="ruby-node">&quot;Content-Length: #{bytes_sent}&quot;</span>)
38
+ 51: <span class="ruby-comment cmt">#puts head</span>
39
+ 52: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">head</span>
40
+ 53: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-value str">&quot;\r\n\r\n&quot;</span>
41
+ 54: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span>
42
+ 55: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
43
+ 56: <span class="ruby-identifier">sent_from_cache</span> = <span class="ruby-keyword kw">true</span>
44
+ 57: <span class="ruby-keyword kw">else</span>
45
+ 58: <span class="ruby-identifier">proxy_request</span> = (<span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;POST&quot;</span>) <span class="ruby-operator">?</span>
46
+ 59: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> ) <span class="ruby-operator">:</span>
47
+ 60: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span> )
48
+ 61:
49
+ 62: <span class="ruby-comment cmt"># open the conneciton up so we can start to stream the connection</span>
50
+ 63: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>).<span class="ruby-identifier">request</span>(<span class="ruby-identifier">proxy_request</span>,<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>) <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">proxy_response</span><span class="ruby-operator">|</span>
51
+ 64: <span class="ruby-identifier">chunk_count</span>,<span class="ruby-identifier">bytes_sent</span> = <span class="ruby-identifier">send_response</span>( <span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
52
+ 65: <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># end request</span>
53
+ 66:
54
+ 67: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@control</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">and</span> <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
55
+ 68: <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">rewind</span>
56
+ 69: <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">put</span>(<span class="ruby-identifier">path_with_query</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@cache_buffer</span>.<span class="ruby-identifier">read</span> )
57
+ 70: <span class="ruby-keyword kw">end</span>
58
+ 71:
59
+ 72: <span class="ruby-keyword kw">end</span>
60
+ 73: [<span class="ruby-identifier">chunk_count</span>, <span class="ruby-identifier">bytes_sent</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">sent_from_cache</span>]
61
+ 74: <span class="ruby-keyword kw">end</span></pre>
24
62
  </body>
25
63
  </html>
@@ -5,15 +5,58 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>proxy_filter_esi (ESI::Proxy)</title>
8
+ <title>send_response (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 119</span>
14
- 119: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
15
- 120: <span class="ruby-identifier">processor</span> = <span class="ruby-constant">Processor</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@config</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@cache_buffer</span> )
16
- 121: <span class="ruby-identifier">processor</span>.<span class="ruby-identifier">send_body</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
17
- 122: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 77</span>
14
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_response</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
15
+ 78: <span class="ruby-identifier">status</span> = <span class="ruby-identifier">read_status</span>( <span class="ruby-identifier">proxy_response</span> )
16
+ 79:
17
+ 80: <span class="ruby-identifier">headers</span> = <span class="ruby-identifier">copy_headers</span>( <span class="ruby-identifier">proxy_response</span> )
18
+ 81:
19
+ 82: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Surrogate-Control&quot;</span>]
20
+ 83: <span class="ruby-ivar">@control</span> = {}
21
+ 84: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">&quot;Surrogate-Control&quot;</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pair</span><span class="ruby-operator">|</span>
22
+ 85: <span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span> = <span class="ruby-identifier">pair</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'='</span>)
23
+ 86: <span class="ruby-ivar">@control</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
24
+ 87: <span class="ruby-keyword kw">end</span>
25
+ 88: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@control</span>[<span class="ruby-value str">'max-age'</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
26
+ 89: <span class="ruby-ivar">@cache_buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
27
+ 90: <span class="ruby-keyword kw">end</span>
28
+ 91: <span class="ruby-keyword kw">end</span>
29
+ 92:
30
+ 93: <span class="ruby-comment cmt"># build the initial HTTP HEAD response</span>
31
+ 94: <span class="ruby-identifier">header</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">STATUS_FORMAT</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">status</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_STATUS_CODES</span>[<span class="ruby-identifier">status</span>]]
32
+ 95: <span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">header</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{k}: #{v}\r\n&quot;</span> }
33
+ 96:
34
+ 97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">500</span> <span class="ruby-keyword kw">or</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@config</span>.<span class="ruby-identifier">enable_esi_processor?</span>( <span class="ruby-identifier">proxy_response</span> )
35
+ 98: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">header</span>
36
+ 99: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-value str">&quot;\r\n&quot;</span>
37
+ 100: <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
38
+ 101: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">&quot;HTTP_VERSION&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;HTTP/1.0&quot;</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;HEAD&quot;</span>
39
+ 102: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span>
40
+ 103: <span class="ruby-identifier">buffer</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>
41
+ 104: <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">buffer</span>, <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">body</span> )
42
+ 105: <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">rewind</span>
43
+ 106: <span class="ruby-identifier">header</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Content-Length: #{buffer.size}\r\n\r\n&quot;</span>
44
+ 107: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
45
+ 108: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">read</span> <span class="ruby-comment cmt"># replace with in memory</span>
46
+ 109: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">buffer</span> )
47
+ 110: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">header</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
48
+ 111: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
49
+ 112: [<span class="ruby-value">0</span>,<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span>]
50
+ 113: <span class="ruby-keyword kw">else</span>
51
+ 114: <span class="ruby-comment cmt"># write current http header into the cache</span>
52
+ 115: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">header</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
53
+ 116: <span class="ruby-identifier">header</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;Transfer-Encoding: chunked\r\n\r\n&quot;</span> <span class="ruby-comment cmt"># don't save this to the cache</span>
54
+ 117: <span class="ruby-comment cmt"># now we don't know the content-length yet, but we save a spot for it</span>
55
+ 118: <span class="ruby-ivar">@cache_buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;Content-Length: \r\n\r\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cache_buffer</span>
56
+ 119: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span>( <span class="ruby-identifier">header</span> )
57
+ 120: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>,<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_request</span>.<span class="ruby-identifier">params</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;HEAD&quot;</span>
58
+ 121: <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
59
+ 122: <span class="ruby-keyword kw">end</span>
60
+ 123: <span class="ruby-keyword kw">end</span></pre>
18
61
  </body>
19
62
  </html>
@@ -5,23 +5,20 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>send_esi_buffered (ESI::Proxy)</title>
8
+ <title>proxy_direct (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 124</span>
14
- 124: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">status</span>, <span class="ruby-identifier">response</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">buffer</span> )
15
- 125: <span class="ruby-identifier">bytes</span> = <span class="ruby-value">0</span>
16
- 126: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">status</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">head</span>,<span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
17
- 127: <span class="ruby-identifier">head</span>[<span class="ruby-value str">&quot;Server&quot;</span>] = <span class="ruby-constant">SERVER</span>
18
- 128: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ESI</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">out</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>, <span class="ruby-value">3</span> )
19
- 129: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">prepare</span>( <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>, <span class="ruby-identifier">http_params</span> )
20
- 130: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">process</span> <span class="ruby-identifier">buffer</span>
21
- 131: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">finish</span>
22
- 132: <span class="ruby-identifier">bytes</span> = <span class="ruby-identifier">out</span>.<span class="ruby-identifier">size</span>
23
- 133: <span class="ruby-keyword kw">end</span>
24
- 134: <span class="ruby-identifier">bytes</span>
25
- 135: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 125</span>
14
+ 125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_direct</span>( <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
15
+ 126: <span class="ruby-identifier">bytes_sent</span> = <span class="ruby-value">0</span>
16
+ 127: <span class="ruby-identifier">proxy_response</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">fragment</span><span class="ruby-operator">|</span>
17
+ 128: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">fragment</span>
18
+ 129: <span class="ruby-identifier">bytes_sent</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">fragment</span>.<span class="ruby-identifier">size</span>
19
+ 130: <span class="ruby-keyword kw">end</span>
20
+ 131: <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">http_response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
21
+ 132: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>,<span class="ruby-identifier">bytes_sent</span>]
22
+ 133: <span class="ruby-keyword kw">end</span></pre>
26
23
  </body>
27
24
  </html>
@@ -5,14 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>read_status (ESI::Proxy)</title>
8
+ <title>proxy_filter_esi (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 138</span>
14
- 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_status</span>(<span class="ruby-identifier">response</span>)
15
- 139: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPResponse</span><span class="ruby-operator">::</span><span class="ruby-constant">CODE_TO_OBJ</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">class</span> }.<span class="ruby-identifier">first</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-value">500</span>
16
- 140: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 135</span>
14
+ 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">proxy_filter_esi</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">proxy_response</span> )
15
+ 136: <span class="ruby-identifier">processor</span> = <span class="ruby-constant">Processor</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@config</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@cache_buffer</span> )
16
+ 137: <span class="ruby-identifier">processor</span>.<span class="ruby-identifier">send_body</span>( <span class="ruby-identifier">http_request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">http_response</span>, <span class="ruby-identifier">proxy_response</span> )
17
+ 138: <span class="ruby-keyword kw">end</span></pre>
17
18
  </body>
18
19
  </html>
@@ -5,24 +5,18 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>http_params (ESI::Proxy)</title>
8
+ <title>send_esi_buffered (ESI::Proxy)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 142</span>
14
- 142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_params</span>(<span class="ruby-identifier">params</span>)
15
- 143: <span class="ruby-identifier">updated_params</span> = {}
16
- 144: <span class="ruby-identifier">params</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span><span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
17
- 145: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/HTTP/i</span>)
18
- 146: <span class="ruby-identifier">k</span> = <span class="ruby-identifier">k</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'_'</span>).<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">capitalize</span> }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'-'</span>)
19
- 147: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span>[<span class="ruby-value">0</span>,<span class="ruby-value">5</span>] <span class="ruby-operator">==</span><span class="ruby-value str">'Http-'</span>
20
- 148: <span class="ruby-identifier">k</span>[<span class="ruby-value">0</span>,<span class="ruby-value">5</span>] = <span class="ruby-value str">''</span>
21
- 149: <span class="ruby-identifier">updated_params</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
22
- 150: <span class="ruby-keyword kw">end</span>
23
- 151: <span class="ruby-keyword kw">end</span>
24
- 152: <span class="ruby-keyword kw">end</span>
25
- 153: <span class="ruby-identifier">updated_params</span>
26
- 154: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/esi/proxy.rb, line 140</span>
14
+ 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_esi_buffered</span>( <span class="ruby-identifier">response</span>, <span class="ruby-identifier">request</span>, <span class="ruby-identifier">http_params</span>, <span class="ruby-identifier">buffer</span> )
15
+ 141: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ESI</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">response</span>, <span class="ruby-ivar">@router</span>, <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">cache</span>, <span class="ruby-value">3</span> )
16
+ 142: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">prepare</span>( <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>, <span class="ruby-identifier">http_params</span> )
17
+ 143: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">process</span> <span class="ruby-identifier">buffer</span>
18
+ 144: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">finish</span>
19
+ 145: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">done</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:done</span>)
20
+ 146: <span class="ruby-keyword kw">end</span></pre>
27
21
  </body>
28
22
  </html>