mongrel_esi 0.5.1 → 0.5.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.
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>