mongrel 0.3.12.4 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +44 -33
- data/bin/mongrel_rails +67 -34
- data/doc/rdoc/classes/IO.html +10 -10
- data/doc/rdoc/classes/IO.src/{M000005.html → M000001.html} +5 -5
- data/doc/rdoc/classes/IO.src/{M000006.html → M000002.html} +5 -5
- data/doc/rdoc/classes/Kernel.html +10 -10
- data/doc/rdoc/classes/Kernel.src/{M000025.html → M000020.html} +5 -5
- data/doc/rdoc/classes/Kernel.src/M000021.html +23 -0
- data/doc/rdoc/classes/Mongrel.html +25 -4
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +383 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000096.html +11 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000097.html +34 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000098.html +21 -6
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000093.html → M000099.html} +13 -13
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000094.html → M000100.html} +11 -11
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000095.html → M000101.html} +4 -4
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000102.html +18 -0
- data/doc/rdoc/classes/Mongrel/{URIClassifier.src/M000084.html → CGIWrapper.src/M000103.html} +5 -5
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000104.html +19 -0
- data/doc/rdoc/classes/Mongrel/Camping.html +5 -5
- data/doc/rdoc/classes/Mongrel/Camping.src/M000046.html +22 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +10 -10
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/{M000049.html → M000047.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000048.html +51 -0
- data/doc/rdoc/classes/Mongrel/Command.html +13 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.html +95 -50
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000024.html +24 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000025.html +42 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +5 -11
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +9 -28
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000031.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000032.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000033.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000034.html +11 -9
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000035.html +11 -5
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +5 -5
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +15 -15
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000037.html +20 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000040.html → M000038.html} +11 -11
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000039.html +37 -7
- data/doc/rdoc/classes/Mongrel/Configurator.html +651 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +16 -20
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +18 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +7 -11
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +7 -6
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +10 -9
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +5 -8
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +21 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +6 -15
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +17 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +20 -33
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000115.html +5 -5
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000116.html +24 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000117.html +19 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000118.html +22 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000119.html +25 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000120.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000121.html +35 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000122.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000123.html +33 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000124.html +18 -0
- data/doc/rdoc/classes/Mongrel/Const.html +39 -7
- data/doc/rdoc/classes/Mongrel/DeflateFilter.html +181 -0
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000094.html +19 -0
- data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000095.html +28 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.html +48 -33
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000056.html +21 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000057.html +43 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000058.html +29 -7
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000059.html +50 -29
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000060.html +26 -27
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +5 -38
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +171 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000116.html → M000125.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000117.html → M000126.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +185 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000072.html → M000069.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000073.html → M000070.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +170 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000074.html → M000075.html} +3 -3
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +20 -10
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000027.html → M000022.html} +5 -4
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/{M000028.html → M000023.html} +3 -3
- data/doc/rdoc/classes/Mongrel/HttpParser.html +41 -36
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000056.html → M000049.html} +6 -5
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000057.html → M000050.html} +7 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000051.html +7 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000052.html +37 -7
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000053.html +5 -7
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000054.html +6 -22
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000055.html +6 -5
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +239 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000130.html +52 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000119.html → M000131.html} +6 -6
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000120.html → M000132.html} +6 -6
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000121.html → M000133.html} +18 -18
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +439 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +12 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +7 -12
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +12 -9
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +9 -9
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +9 -10
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +9 -5
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +18 -7
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +8 -5
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +20 -0
- data/doc/rdoc/classes/Mongrel/{HttpServer.src/M000069.html → HttpResponse.src/M000085.html} +7 -5
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000086.html +20 -0
- data/doc/rdoc/classes/Mongrel/{Configurator.src/M000101.html → HttpResponse.src/M000087.html} +5 -5
- data/doc/rdoc/classes/Mongrel/HttpServer.html +68 -59
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000062.html +25 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000063.html +83 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html +13 -11
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +50 -53
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000066.html +21 -11
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000067.html +5 -47
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +9 -15
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +16 -16
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000040.html +39 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/{M000043.html → M000041.html} +11 -11
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000042.html +13 -22
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +17 -17
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000043.html +22 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000044.html +51 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000045.html +10 -9
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.html +211 -0
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000127.html +24 -0
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000128.html +24 -0
- data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000129.html +18 -0
- data/doc/rdoc/classes/{Class.html → Mongrel/StatusHandler.html} +42 -45
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000071.html +18 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000072.html +24 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000073.html +42 -0
- data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000074.html +20 -0
- data/doc/rdoc/classes/Mongrel/StopServer.html +117 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +314 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +5 -23
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +5 -70
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000086.html → M000090.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000087.html → M000091.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000092.html +36 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000093.html +83 -0
- data/doc/rdoc/classes/MongrelDbg.html +25 -25
- data/doc/rdoc/classes/MongrelDbg.src/{M000020.html → M000015.html} +5 -5
- data/doc/rdoc/classes/MongrelDbg.src/{M000021.html → M000016.html} +6 -6
- data/doc/rdoc/classes/MongrelDbg.src/{M000022.html → M000017.html} +8 -8
- data/doc/rdoc/classes/MongrelDbg.src/{M000023.html → M000018.html} +7 -7
- data/doc/rdoc/classes/MongrelDbg.src/{M000024.html → M000019.html} +4 -4
- data/doc/rdoc/classes/ObjectTracker.html +10 -40
- data/doc/rdoc/classes/ObjectTracker.src/M000013.html +27 -0
- data/doc/rdoc/classes/ObjectTracker.src/M000014.html +44 -0
- data/doc/rdoc/classes/RequestLog.html +115 -0
- data/doc/rdoc/classes/RequestLog/Access.html +151 -0
- data/doc/rdoc/classes/RequestLog/Access.src/{M000122.html → M000134.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Files.html +144 -0
- data/doc/rdoc/classes/RequestLog/Files.src/{M000123.html → M000135.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Objects.html +144 -0
- data/doc/rdoc/classes/RequestLog/Objects.src/{M000124.html → M000137.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Params.html +144 -0
- data/doc/rdoc/classes/RequestLog/Params.src/{M000125.html → M000138.html} +5 -5
- data/doc/rdoc/classes/RequestLog/Threads.html +144 -0
- data/doc/rdoc/classes/RequestLog/Threads.src/M000136.html +34 -0
- data/doc/rdoc/classes/Stats.html +54 -36
- data/doc/rdoc/classes/Stats.src/{M000013.html → M000005.html} +6 -5
- data/doc/rdoc/classes/Stats.src/M000006.html +23 -0
- data/doc/rdoc/classes/Stats.src/M000007.html +26 -0
- data/doc/rdoc/classes/Stats.src/M000008.html +18 -0
- data/doc/rdoc/classes/Stats.src/M000009.html +5 -6
- data/doc/rdoc/classes/Stats.src/M000010.html +5 -10
- data/doc/rdoc/classes/Stats.src/M000011.html +10 -13
- data/doc/rdoc/classes/Stats.src/M000012.html +7 -5
- data/doc/rdoc/classes/TCPServer.html +9 -9
- data/doc/rdoc/classes/TCPServer.src/M000003.html +19 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/COPYING.html +1 -1
- data/doc/rdoc/files/LICENSE.html +1 -1
- data/doc/rdoc/files/README.html +1 -1
- data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
- data/doc/rdoc/files/lib/mongrel/camping_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/command_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/debug_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +3 -3
- data/doc/rdoc/files/lib/mongrel/init_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +28 -1
- data/doc/rdoc/files/lib/mongrel/stats_rb.html +21 -10
- data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +23 -4
- data/doc/rdoc/files/lib/mongrel_rb.html +33 -1
- data/doc/rdoc/fr_class_index.html +65 -0
- data/doc/rdoc/fr_file_index.html +40 -0
- data/doc/rdoc/fr_method_index.html +164 -0
- data/doc/rdoc/index.html +24 -0
- data/examples/camping/blog.rb +1 -1
- data/examples/camping/tepee.rb +4 -3
- data/examples/simpletest.rb +15 -14
- data/ext/http11/http11.c +52 -18
- data/ext/http11/http11_parser.c +194 -177
- data/ext/http11/http11_parser.h +23 -5
- data/lib/mongrel.rb +295 -134
- data/lib/mongrel/camping.rb +48 -6
- data/lib/mongrel/cgi.rb +20 -2
- data/lib/mongrel/command.rb +76 -27
- data/lib/mongrel/debug.rb +42 -13
- data/lib/mongrel/handlers.rb +218 -59
- data/lib/mongrel/init.rb +18 -0
- data/lib/mongrel/rails.rb +61 -44
- data/lib/mongrel/stats.rb +30 -2
- data/lib/mongrel/tcphack.rb +18 -0
- data/setup.rb +799 -574
- data/test/mime.yaml +3 -0
- data/test/mongrel.conf +1 -0
- data/test/test_command.rb +101 -0
- data/test/test_conditional.rb +124 -0
- data/test/test_configurator.rb +56 -22
- data/test/test_debug.rb +18 -2
- data/test/test_handlers.rb +105 -0
- data/test/test_http11.rb +27 -9
- data/test/test_response.rb +38 -0
- data/test/test_stats.rb +21 -2
- data/test/test_uriclassifier.rb +18 -0
- data/test/test_ws.rb +105 -19
- data/test/testhelp.rb +36 -0
- data/tools/rakehelp.rb +52 -46
- data/tools/trickletest.rb +37 -0
- metadata +127 -76
- data/doc/rdoc/classes/Class.src/M000001.html +0 -24
- data/doc/rdoc/classes/Class.src/M000002.html +0 -62
- data/doc/rdoc/classes/Class.src/M000003.html +0 -21
- data/doc/rdoc/classes/Class.src/M000004.html +0 -20
- data/doc/rdoc/classes/Kernel.src/M000026.html +0 -25
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000090.html +0 -24
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000091.html +0 -47
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000092.html +0 -34
- data/doc/rdoc/classes/Mongrel/Camping.src/M000048.html +0 -22
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000050.html +0 -27
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +0 -18
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +0 -46
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +0 -24
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +0 -23
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +0 -32
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +0 -19
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +0 -31
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000062.html +0 -40
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000063.html +0 -18
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000118.html +0 -28
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +0 -26
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000070.html +0 -22
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000071.html +0 -18
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000044.html +0 -32
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +0 -48
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +0 -23
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html +0 -18
- data/doc/rdoc/classes/ObjectTracker.src/M000016.html +0 -22
- data/doc/rdoc/classes/ObjectTracker.src/M000017.html +0 -18
- data/doc/rdoc/classes/ObjectTracker.src/M000018.html +0 -18
- data/doc/rdoc/classes/ObjectTracker.src/M000019.html +0 -44
- data/doc/rdoc/classes/Stats.src/M000014.html +0 -19
- data/doc/rdoc/classes/Stats.src/M000015.html +0 -20
- data/doc/rdoc/classes/TCPServer.src/M000007.html +0 -19
- data/lib/mongrel/#rails.rb# +0 -178
|
@@ -5,14 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>new (Mongrel::CGIWrapper)</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>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 52</span>
|
|
14
|
+
52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
|
15
|
+
53: <span class="ruby-ivar">@request</span> = <span class="ruby-identifier">request</span>
|
|
16
|
+
54: <span class="ruby-ivar">@response</span> = <span class="ruby-identifier">response</span>
|
|
17
|
+
55: <span class="ruby-ivar">@args</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
|
|
18
|
+
56: <span class="ruby-ivar">@input</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>
|
|
19
|
+
57: <span class="ruby-ivar">@head</span> = {}
|
|
20
|
+
58: <span class="ruby-ivar">@out_called</span> = <span class="ruby-keyword kw">false</span>
|
|
21
|
+
59: <span class="ruby-keyword kw">super</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
|
22
|
+
60: <span class="ruby-keyword kw">end</span></pre>
|
|
17
23
|
</body>
|
|
18
24
|
</html>
|
|
@@ -5,14 +5,43 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>header (Mongrel::CGIWrapper)</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/mongrel/cgi.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 69</span>
|
|
14
|
+
69: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">"text/html"</span>)
|
|
15
|
+
70: <span class="ruby-comment cmt"># if they pass in a string then just write the Content-Type</span>
|
|
16
|
+
71: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
|
|
17
|
+
72: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>]
|
|
18
|
+
73: <span class="ruby-keyword kw">else</span>
|
|
19
|
+
74: <span class="ruby-comment cmt"># convert the given options into what Mongrel wants</span>
|
|
20
|
+
75: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'type'</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">"text/html"</span>
|
|
21
|
+
76: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] <span class="ruby-operator">+=</span> <span class="ruby-value str">"; charset="</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-value str">"charset"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>]
|
|
22
|
+
77:
|
|
23
|
+
78: <span class="ruby-comment cmt"># setup date only if they use nph</span>
|
|
24
|
+
79: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Date'</span>] = <span class="ruby-constant">CGI</span><span class="ruby-operator">::</span><span class="ruby-identifier">rfc1123_date</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'nph'</span>]
|
|
25
|
+
80:
|
|
26
|
+
81: <span class="ruby-comment cmt"># setup the server to use the default or what they set</span>
|
|
27
|
+
82: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Server'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'server'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">env_table</span>[<span class="ruby-value str">'SERVER_SOFTWARE'</span>]
|
|
28
|
+
83:
|
|
29
|
+
84: <span class="ruby-comment cmt"># remaining possible options they can give</span>
|
|
30
|
+
85: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Status'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>]
|
|
31
|
+
86: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Language'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>]
|
|
32
|
+
87: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Expires'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>]
|
|
33
|
+
88:
|
|
34
|
+
89: <span class="ruby-comment cmt"># drop the keys we don't want anymore</span>
|
|
35
|
+
90: <span class="ruby-constant">REMOVED_KEYS</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">k</span>) }
|
|
36
|
+
91:
|
|
37
|
+
92: <span class="ruby-comment cmt"># finally just convert the rest raw (which puts 'cookie' directly)</span>
|
|
38
|
+
93: <span class="ruby-comment cmt"># 'cookie' is translated later as we write the header out</span>
|
|
39
|
+
94: <span class="ruby-identifier">options</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-ivar">@head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
|
|
40
|
+
95: <span class="ruby-keyword kw">end</span>
|
|
41
|
+
96:
|
|
42
|
+
97: <span class="ruby-comment cmt"># doing this fakes out the cgi library to think the headers are empty</span>
|
|
43
|
+
98: <span class="ruby-comment cmt"># we then do the real headers in the out function call later</span>
|
|
44
|
+
99: <span class="ruby-value str">""</span>
|
|
45
|
+
100: <span class="ruby-keyword kw">end</span></pre>
|
|
17
46
|
</body>
|
|
18
47
|
</html>
|
|
@@ -5,15 +5,30 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>send_cookies (Mongrel::CGIWrapper)</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/mongrel/cgi.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 107</span>
|
|
14
|
+
107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">to</span>)
|
|
15
|
+
108: <span class="ruby-comment cmt"># convert the cookies based on the myriad of possible ways to set a cookie</span>
|
|
16
|
+
109: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
|
|
17
|
+
110: <span class="ruby-identifier">cookie</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
|
|
18
|
+
111: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">cookie</span>
|
|
19
|
+
112: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
|
|
20
|
+
113: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> }
|
|
21
|
+
114: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Hash</span>
|
|
22
|
+
115: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each_value</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>}
|
|
23
|
+
116: <span class="ruby-keyword kw">else</span>
|
|
24
|
+
117: <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'cookie'</span>].<span class="ruby-identifier">to_s</span>
|
|
25
|
+
118: <span class="ruby-keyword kw">end</span>
|
|
26
|
+
119:
|
|
27
|
+
120: <span class="ruby-ivar">@head</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">'cookie'</span>)
|
|
28
|
+
121:
|
|
29
|
+
122: <span class="ruby-comment cmt"># @output_cookies seems to never be used, but we'll process it just in case</span>
|
|
30
|
+
123: <span class="ruby-ivar">@output_cookies</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> } <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@output_cookies</span>
|
|
31
|
+
124: <span class="ruby-keyword kw">end</span>
|
|
32
|
+
125: <span class="ruby-keyword kw">end</span></pre>
|
|
18
33
|
</body>
|
|
19
34
|
</html>
|
|
@@ -10,18 +10,18 @@
|
|
|
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/mongrel/cgi.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 131</span>
|
|
14
|
+
131: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">out</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">"text/html"</span>)
|
|
15
|
+
132: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@out_called</span> <span class="ruby-comment cmt"># don't do this more than once</span>
|
|
16
|
+
133:
|
|
17
|
+
134: <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span>)
|
|
18
|
+
135:
|
|
19
|
+
136: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">start</span> <span class="ruby-identifier">status</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>
|
|
20
|
+
137: <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">head</span>)
|
|
21
|
+
138:
|
|
22
|
+
139: <span class="ruby-ivar">@head</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">head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
|
|
23
|
+
140: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-keyword kw">yield</span> <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>)
|
|
24
|
+
141: <span class="ruby-keyword kw">end</span>
|
|
25
|
+
142: <span class="ruby-keyword kw">end</span></pre>
|
|
26
26
|
</body>
|
|
27
27
|
</html>
|
|
@@ -10,16 +10,16 @@
|
|
|
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/mongrel/cgi.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 147</span>
|
|
14
|
+
147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">status</span>
|
|
15
|
+
148: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@status</span>
|
|
16
|
+
149: <span class="ruby-identifier">stat</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">"Status"</span>]
|
|
17
|
+
150: <span class="ruby-identifier">stat</span> = <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">' '</span>)[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stat</span>
|
|
18
|
+
151:
|
|
19
|
+
152: <span class="ruby-ivar">@status</span> = <span class="ruby-identifier">stat</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"200"</span>
|
|
20
|
+
153: <span class="ruby-keyword kw">end</span>
|
|
21
|
+
154:
|
|
22
|
+
155: <span class="ruby-ivar">@status</span>
|
|
23
|
+
156: <span class="ruby-keyword kw">end</span></pre>
|
|
24
24
|
</body>
|
|
25
25
|
</html>
|
|
@@ -10,9 +10,9 @@
|
|
|
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/mongrel/cgi.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 159</span>
|
|
14
|
+
159: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">args</span>
|
|
15
|
+
160: <span class="ruby-ivar">@args</span>
|
|
16
|
+
161: <span class="ruby-keyword kw">end</span></pre>
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>env_table (Mongrel::CGIWrapper)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 164</span>
|
|
14
|
+
164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env_table</span>
|
|
15
|
+
165: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
|
|
16
|
+
166: <span class="ruby-keyword kw">end</span></pre>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
data/doc/rdoc/classes/Mongrel/{URIClassifier.src/M000084.html → CGIWrapper.src/M000103.html}
RENAMED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
<html>
|
|
7
7
|
<head>
|
|
8
|
-
<title>
|
|
8
|
+
<title>stdinput (Mongrel::CGIWrapper)</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>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 169</span>
|
|
14
|
+
169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdinput</span>
|
|
15
|
+
170: <span class="ruby-ivar">@input</span>
|
|
16
|
+
171: <span class="ruby-keyword kw">end</span></pre>
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>stdoutput (Mongrel::CGIWrapper)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 174</span>
|
|
14
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdoutput</span>
|
|
15
|
+
175: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"WARNING: Your program is doing something not expected. Please tell Zed that stdoutput was used and what software you are running. Thanks."</span>
|
|
16
|
+
176: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span>
|
|
17
|
+
177: <span class="ruby-keyword kw">end</span></pre>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
@@ -110,7 +110,7 @@ and it’s just annoying anyway.
|
|
|
110
110
|
<h3 class="section-bar">Methods</h3>
|
|
111
111
|
|
|
112
112
|
<div class="name-list">
|
|
113
|
-
<a href="#
|
|
113
|
+
<a href="#M000046">start</a>
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
|
|
@@ -138,12 +138,12 @@ and it’s just annoying anyway.
|
|
|
138
138
|
<div id="methods">
|
|
139
139
|
<h3 class="section-bar">Public Class methods</h3>
|
|
140
140
|
|
|
141
|
-
<div id="method-
|
|
142
|
-
<a name="
|
|
141
|
+
<div id="method-M000046" class="method-detail">
|
|
142
|
+
<a name="M000046"></a>
|
|
143
143
|
|
|
144
144
|
<div class="method-heading">
|
|
145
|
-
<a href="Camping.src/
|
|
146
|
-
onclick="popupCode('Camping.src/
|
|
145
|
+
<a href="Camping.src/M000046.html" target="Code" class="method-signature"
|
|
146
|
+
onclick="popupCode('Camping.src/M000046.html');return false;">
|
|
147
147
|
<span class="method-name">start</span><span class="method-args">(server, port, uri, klass)</span>
|
|
148
148
|
</a>
|
|
149
149
|
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>start (Mongrel::Camping)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 98</span>
|
|
14
|
+
98: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Camping</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">klass</span>)
|
|
15
|
+
99: <span class="ruby-identifier">h</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpServer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>)
|
|
16
|
+
100: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-constant">CampingHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">klass</span>))
|
|
17
|
+
101: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-value str">"/favicon.ico"</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Error404Handler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">""</span>))
|
|
18
|
+
102: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">run</span>
|
|
19
|
+
103: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">h</span>
|
|
20
|
+
104: <span class="ruby-keyword kw">end</span></pre>
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -97,8 +97,8 @@ href="../HttpResponse.html">Mongrel::HttpResponse</a> needs.
|
|
|
97
97
|
<h3 class="section-bar">Methods</h3>
|
|
98
98
|
|
|
99
99
|
<div class="name-list">
|
|
100
|
-
<a href="#
|
|
101
|
-
<a href="#
|
|
100
|
+
<a href="#M000047">new</a>
|
|
101
|
+
<a href="#M000048">process</a>
|
|
102
102
|
</div>
|
|
103
103
|
</div>
|
|
104
104
|
|
|
@@ -120,12 +120,12 @@ href="../HttpResponse.html">Mongrel::HttpResponse</a> needs.
|
|
|
120
120
|
<div id="methods">
|
|
121
121
|
<h3 class="section-bar">Public Class methods</h3>
|
|
122
122
|
|
|
123
|
-
<div id="method-
|
|
124
|
-
<a name="
|
|
123
|
+
<div id="method-M000047" class="method-detail">
|
|
124
|
+
<a name="M000047"></a>
|
|
125
125
|
|
|
126
126
|
<div class="method-heading">
|
|
127
|
-
<a href="CampingHandler.src/
|
|
128
|
-
onclick="popupCode('CampingHandler.src/
|
|
127
|
+
<a href="CampingHandler.src/M000047.html" target="Code" class="method-signature"
|
|
128
|
+
onclick="popupCode('CampingHandler.src/M000047.html');return false;">
|
|
129
129
|
<span class="method-name">new</span><span class="method-args">(klass)</span>
|
|
130
130
|
</a>
|
|
131
131
|
</div>
|
|
@@ -136,12 +136,12 @@ href="../HttpResponse.html">Mongrel::HttpResponse</a> needs.
|
|
|
136
136
|
|
|
137
137
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
138
138
|
|
|
139
|
-
<div id="method-
|
|
140
|
-
<a name="
|
|
139
|
+
<div id="method-M000048" class="method-detail">
|
|
140
|
+
<a name="M000048"></a>
|
|
141
141
|
|
|
142
142
|
<div class="method-heading">
|
|
143
|
-
<a href="CampingHandler.src/
|
|
144
|
-
onclick="popupCode('CampingHandler.src/
|
|
143
|
+
<a href="CampingHandler.src/M000048.html" target="Code" class="method-signature"
|
|
144
|
+
onclick="popupCode('CampingHandler.src/M000048.html');return false;">
|
|
145
145
|
<span class="method-name">process</span><span class="method-args">(request, response)</span>
|
|
146
146
|
</a>
|
|
147
147
|
</div>
|
|
@@ -10,9 +10,9 @@
|
|
|
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/mongrel/camping.rb, line
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 48</span>
|
|
14
|
+
48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>)
|
|
15
|
+
49: <span class="ruby-ivar">@klass</span> = <span class="ruby-identifier">klass</span>
|
|
16
|
+
50: <span class="ruby-keyword kw">end</span></pre>
|
|
17
17
|
</body>
|
|
18
18
|
</html>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
+
<!DOCTYPE html
|
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
+
|
|
6
|
+
<html>
|
|
7
|
+
<head>
|
|
8
|
+
<title>process (Mongrel::Camping::CampingHandler)</title>
|
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
+
<link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
+
</head>
|
|
12
|
+
<body class="standalone-code">
|
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 52</span>
|
|
14
|
+
52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
|
|
15
|
+
53: <span class="ruby-identifier">controller</span> = <span class="ruby-ivar">@klass</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>, <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>)
|
|
16
|
+
54: <span class="ruby-identifier">sendfile</span>, <span class="ruby-identifier">clength</span> = <span class="ruby-keyword kw">nil</span>
|
|
17
|
+
55: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">status</span>
|
|
18
|
+
56: <span class="ruby-identifier">controller</span>.<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>
|
|
19
|
+
57: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^X-SENDFILE$/i</span>
|
|
20
|
+
58: <span class="ruby-identifier">sendfile</span> = <span class="ruby-identifier">v</span>
|
|
21
|
+
59: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^CONTENT-LENGTH$/i</span>
|
|
22
|
+
60: <span class="ruby-identifier">clength</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_i</span>
|
|
23
|
+
61: <span class="ruby-keyword kw">else</span>
|
|
24
|
+
62: [<span class="ruby-operator">*</span><span class="ruby-identifier">v</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vi</span><span class="ruby-operator">|</span>
|
|
25
|
+
63: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">vi</span>
|
|
26
|
+
64: <span class="ruby-keyword kw">end</span>
|
|
27
|
+
65: <span class="ruby-keyword kw">end</span>
|
|
28
|
+
66: <span class="ruby-keyword kw">end</span>
|
|
29
|
+
67:
|
|
30
|
+
68: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sendfile</span>
|
|
31
|
+
69: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">size</span>(<span class="ruby-identifier">sendfile</span>))
|
|
32
|
+
70: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
|
|
33
|
+
71: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_file</span>(<span class="ruby-identifier">sendfile</span>)
|
|
34
|
+
72: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:read</span>
|
|
35
|
+
73: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">clength</span>)
|
|
36
|
+
74: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
|
|
37
|
+
75: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">chunk</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">16384</span>)
|
|
38
|
+
76: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">chunk</span>)
|
|
39
|
+
77: <span class="ruby-keyword kw">end</span>
|
|
40
|
+
78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:close</span>
|
|
41
|
+
79: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">close</span>
|
|
42
|
+
80: <span class="ruby-keyword kw">end</span>
|
|
43
|
+
81: <span class="ruby-keyword kw">else</span>
|
|
44
|
+
82: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>
|
|
45
|
+
83: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">body</span>.<span class="ruby-identifier">length</span>)
|
|
46
|
+
84: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
|
|
47
|
+
85: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">body</span>)
|
|
48
|
+
86: <span class="ruby-keyword kw">end</span>
|
|
49
|
+
87: <span class="ruby-keyword kw">end</span></pre>
|
|
50
|
+
</body>
|
|
51
|
+
</html>
|
|
@@ -99,6 +99,19 @@ Class <a href="Command/Registry.html" class="link">Mongrel::Command::Registry</a
|
|
|
99
99
|
|
|
100
100
|
</div>
|
|
101
101
|
|
|
102
|
+
<div id="constants-list">
|
|
103
|
+
<h3 class="section-bar">Constants</h3>
|
|
104
|
+
|
|
105
|
+
<div class="name-list">
|
|
106
|
+
<table summary="Constants">
|
|
107
|
+
<tr class="top-aligned-row context-row">
|
|
108
|
+
<td class="context-item-name">BANNER</td>
|
|
109
|
+
<td>=</td>
|
|
110
|
+
<td class="context-item-value">"Usage: mongrel_rails <command> [options]"</td>
|
|
111
|
+
</tr>
|
|
112
|
+
</table>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
102
115
|
|
|
103
116
|
|
|
104
117
|
|
|
@@ -89,16 +89,19 @@ implement this interface to do the user’s bidding.
|
|
|
89
89
|
<h3 class="section-bar">Methods</h3>
|
|
90
90
|
|
|
91
91
|
<div class="name-list">
|
|
92
|
-
<a href="#
|
|
93
|
-
<a href="#
|
|
94
|
-
<a href="#
|
|
95
|
-
<a href="#
|
|
96
|
-
<a href="#
|
|
97
|
-
<a href="#
|
|
98
|
-
<a href="#
|
|
99
|
-
<a href="#
|
|
100
|
-
<a href="#
|
|
101
|
-
<a href="#
|
|
92
|
+
<a href="#M000026">configure</a>
|
|
93
|
+
<a href="#M000036">failure</a>
|
|
94
|
+
<a href="#M000028">help</a>
|
|
95
|
+
<a href="#M000025">new</a>
|
|
96
|
+
<a href="#M000024">options</a>
|
|
97
|
+
<a href="#M000029">run</a>
|
|
98
|
+
<a href="#M000030">valid?</a>
|
|
99
|
+
<a href="#M000033">valid_dir?</a>
|
|
100
|
+
<a href="#M000031">valid_exists?</a>
|
|
101
|
+
<a href="#M000032">valid_file?</a>
|
|
102
|
+
<a href="#M000035">valid_group?</a>
|
|
103
|
+
<a href="#M000034">valid_user?</a>
|
|
104
|
+
<a href="#M000027">validate</a>
|
|
102
105
|
</div>
|
|
103
106
|
</div>
|
|
104
107
|
|
|
@@ -143,12 +146,12 @@ implement this interface to do the user’s bidding.
|
|
|
143
146
|
<div id="methods">
|
|
144
147
|
<h3 class="section-bar">Public Class methods</h3>
|
|
145
148
|
|
|
146
|
-
<div id="method-
|
|
147
|
-
<a name="
|
|
149
|
+
<div id="method-M000025" class="method-detail">
|
|
150
|
+
<a name="M000025"></a>
|
|
148
151
|
|
|
149
152
|
<div class="method-heading">
|
|
150
|
-
<a href="Base.src/
|
|
151
|
-
onclick="popupCode('Base.src/
|
|
153
|
+
<a href="Base.src/M000025.html" target="Code" class="method-signature"
|
|
154
|
+
onclick="popupCode('Base.src/M000025.html');return false;">
|
|
152
155
|
<span class="method-name">new</span><span class="method-args">(options={})</span>
|
|
153
156
|
</a>
|
|
154
157
|
</div>
|
|
@@ -164,12 +167,26 @@ function.
|
|
|
164
167
|
|
|
165
168
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
166
169
|
|
|
167
|
-
<div id="method-
|
|
168
|
-
<a name="
|
|
170
|
+
<div id="method-M000026" class="method-detail">
|
|
171
|
+
<a name="M000026"></a>
|
|
169
172
|
|
|
170
173
|
<div class="method-heading">
|
|
171
|
-
<a href="Base.src/
|
|
172
|
-
onclick="popupCode('Base.src/
|
|
174
|
+
<a href="Base.src/M000026.html" target="Code" class="method-signature"
|
|
175
|
+
onclick="popupCode('Base.src/M000026.html');return false;">
|
|
176
|
+
<span class="method-name">configure</span><span class="method-args">()</span>
|
|
177
|
+
</a>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<div class="method-description">
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div id="method-M000036" class="method-detail">
|
|
185
|
+
<a name="M000036"></a>
|
|
186
|
+
|
|
187
|
+
<div class="method-heading">
|
|
188
|
+
<a href="Base.src/M000036.html" target="Code" class="method-signature"
|
|
189
|
+
onclick="popupCode('Base.src/M000036.html');return false;">
|
|
173
190
|
<span class="method-name">failure</span><span class="method-args">(message)</span>
|
|
174
191
|
</a>
|
|
175
192
|
</div>
|
|
@@ -182,12 +199,12 @@ developed.
|
|
|
182
199
|
</div>
|
|
183
200
|
</div>
|
|
184
201
|
|
|
185
|
-
<div id="method-
|
|
186
|
-
<a name="
|
|
202
|
+
<div id="method-M000028" class="method-detail">
|
|
203
|
+
<a name="M000028"></a>
|
|
187
204
|
|
|
188
205
|
<div class="method-heading">
|
|
189
|
-
<a href="Base.src/
|
|
190
|
-
onclick="popupCode('Base.src/
|
|
206
|
+
<a href="Base.src/M000028.html" target="Code" class="method-signature"
|
|
207
|
+
onclick="popupCode('Base.src/M000028.html');return false;">
|
|
191
208
|
<span class="method-name">help</span><span class="method-args">()</span>
|
|
192
209
|
</a>
|
|
193
210
|
</div>
|
|
@@ -199,12 +216,12 @@ Returns a help message. Defaults to OptionParser#help which should be good.
|
|
|
199
216
|
</div>
|
|
200
217
|
</div>
|
|
201
218
|
|
|
202
|
-
<div id="method-
|
|
203
|
-
<a name="
|
|
219
|
+
<div id="method-M000024" class="method-detail">
|
|
220
|
+
<a name="M000024"></a>
|
|
204
221
|
|
|
205
222
|
<div class="method-heading">
|
|
206
|
-
<a href="Base.src/
|
|
207
|
-
onclick="popupCode('Base.src/
|
|
223
|
+
<a href="Base.src/M000024.html" target="Code" class="method-signature"
|
|
224
|
+
onclick="popupCode('Base.src/M000024.html');return false;">
|
|
208
225
|
<span class="method-name">options</span><span class="method-args">(opts)</span>
|
|
209
226
|
</a>
|
|
210
227
|
</div>
|
|
@@ -218,12 +235,12 @@ set, and a default value. No exceptions.
|
|
|
218
235
|
</div>
|
|
219
236
|
</div>
|
|
220
237
|
|
|
221
|
-
<div id="method-
|
|
222
|
-
<a name="
|
|
238
|
+
<div id="method-M000029" class="method-detail">
|
|
239
|
+
<a name="M000029"></a>
|
|
223
240
|
|
|
224
241
|
<div class="method-heading">
|
|
225
|
-
<a href="Base.src/
|
|
226
|
-
onclick="popupCode('Base.src/
|
|
242
|
+
<a href="Base.src/M000029.html" target="Code" class="method-signature"
|
|
243
|
+
onclick="popupCode('Base.src/M000029.html');return false;">
|
|
227
244
|
<span class="method-name">run</span><span class="method-args">()</span>
|
|
228
245
|
</a>
|
|
229
246
|
</div>
|
|
@@ -236,12 +253,12 @@ it will throw a NotImplementedError as a reminder.
|
|
|
236
253
|
</div>
|
|
237
254
|
</div>
|
|
238
255
|
|
|
239
|
-
<div id="method-
|
|
240
|
-
<a name="
|
|
256
|
+
<div id="method-M000030" class="method-detail">
|
|
257
|
+
<a name="M000030"></a>
|
|
241
258
|
|
|
242
259
|
<div class="method-heading">
|
|
243
|
-
<a href="Base.src/
|
|
244
|
-
onclick="popupCode('Base.src/
|
|
260
|
+
<a href="Base.src/M000030.html" target="Code" class="method-signature"
|
|
261
|
+
onclick="popupCode('Base.src/M000030.html');return false;">
|
|
245
262
|
<span class="method-name">valid?</span><span class="method-args">(exp, message)</span>
|
|
246
263
|
</a>
|
|
247
264
|
</div>
|
|
@@ -254,12 +271,12 @@ exiting.
|
|
|
254
271
|
</div>
|
|
255
272
|
</div>
|
|
256
273
|
|
|
257
|
-
<div id="method-
|
|
258
|
-
<a name="
|
|
274
|
+
<div id="method-M000033" class="method-detail">
|
|
275
|
+
<a name="M000033"></a>
|
|
259
276
|
|
|
260
277
|
<div class="method-heading">
|
|
261
|
-
<a href="Base.src/
|
|
262
|
-
onclick="popupCode('Base.src/
|
|
278
|
+
<a href="Base.src/M000033.html" target="Code" class="method-signature"
|
|
279
|
+
onclick="popupCode('Base.src/M000033.html');return false;">
|
|
263
280
|
<span class="method-name">valid_dir?</span><span class="method-args">(file, message)</span>
|
|
264
281
|
</a>
|
|
265
282
|
</div>
|
|
@@ -271,12 +288,12 @@ Validates that the given directory exists
|
|
|
271
288
|
</div>
|
|
272
289
|
</div>
|
|
273
290
|
|
|
274
|
-
<div id="method-
|
|
275
|
-
<a name="
|
|
291
|
+
<div id="method-M000031" class="method-detail">
|
|
292
|
+
<a name="M000031"></a>
|
|
276
293
|
|
|
277
294
|
<div class="method-heading">
|
|
278
|
-
<a href="Base.src/
|
|
279
|
-
onclick="popupCode('Base.src/
|
|
295
|
+
<a href="Base.src/M000031.html" target="Code" class="method-signature"
|
|
296
|
+
onclick="popupCode('Base.src/M000031.html');return false;">
|
|
280
297
|
<span class="method-name">valid_exists?</span><span class="method-args">(file, message)</span>
|
|
281
298
|
</a>
|
|
282
299
|
</div>
|
|
@@ -288,12 +305,12 @@ Validates that a file exists and if not displays the message
|
|
|
288
305
|
</div>
|
|
289
306
|
</div>
|
|
290
307
|
|
|
291
|
-
<div id="method-
|
|
292
|
-
<a name="
|
|
308
|
+
<div id="method-M000032" class="method-detail">
|
|
309
|
+
<a name="M000032"></a>
|
|
293
310
|
|
|
294
311
|
<div class="method-heading">
|
|
295
|
-
<a href="Base.src/
|
|
296
|
-
onclick="popupCode('Base.src/
|
|
312
|
+
<a href="Base.src/M000032.html" target="Code" class="method-signature"
|
|
313
|
+
onclick="popupCode('Base.src/M000032.html');return false;">
|
|
297
314
|
<span class="method-name">valid_file?</span><span class="method-args">(file, message)</span>
|
|
298
315
|
</a>
|
|
299
316
|
</div>
|
|
@@ -305,12 +322,40 @@ Validates that the file is a file and not a directory or something else.
|
|
|
305
322
|
</div>
|
|
306
323
|
</div>
|
|
307
324
|
|
|
308
|
-
<div id="method-
|
|
309
|
-
<a name="
|
|
325
|
+
<div id="method-M000035" class="method-detail">
|
|
326
|
+
<a name="M000035"></a>
|
|
310
327
|
|
|
311
328
|
<div class="method-heading">
|
|
312
|
-
<a href="Base.src/
|
|
313
|
-
onclick="popupCode('Base.src/
|
|
329
|
+
<a href="Base.src/M000035.html" target="Code" class="method-signature"
|
|
330
|
+
onclick="popupCode('Base.src/M000035.html');return false;">
|
|
331
|
+
<span class="method-name">valid_group?</span><span class="method-args">(group)</span>
|
|
332
|
+
</a>
|
|
333
|
+
</div>
|
|
334
|
+
|
|
335
|
+
<div class="method-description">
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
|
|
339
|
+
<div id="method-M000034" class="method-detail">
|
|
340
|
+
<a name="M000034"></a>
|
|
341
|
+
|
|
342
|
+
<div class="method-heading">
|
|
343
|
+
<a href="Base.src/M000034.html" target="Code" class="method-signature"
|
|
344
|
+
onclick="popupCode('Base.src/M000034.html');return false;">
|
|
345
|
+
<span class="method-name">valid_user?</span><span class="method-args">(user)</span>
|
|
346
|
+
</a>
|
|
347
|
+
</div>
|
|
348
|
+
|
|
349
|
+
<div class="method-description">
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<div id="method-M000027" class="method-detail">
|
|
354
|
+
<a name="M000027"></a>
|
|
355
|
+
|
|
356
|
+
<div class="method-heading">
|
|
357
|
+
<a href="Base.src/M000027.html" target="Code" class="method-signature"
|
|
358
|
+
onclick="popupCode('Base.src/M000027.html');return false;">
|
|
314
359
|
<span class="method-name">validate</span><span class="method-args">()</span>
|
|
315
360
|
</a>
|
|
316
361
|
</div>
|