Capcode 0.9.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/README.rdoc +3 -0
  2. data/examples/rest.log +15 -0
  3. data/examples/static.rb +12 -0
  4. data/examples/static/static-index.html +1 -0
  5. data/lib/capcode.rb +14 -344
  6. data/lib/capcode/filters.rb +1 -0
  7. data/lib/capcode/helpers.rb +246 -0
  8. data/lib/capcode/http_error.rb +49 -0
  9. data/lib/capcode/static_files.rb +68 -0
  10. data/lib/capcode/version.rb +1 -1
  11. metadata +46 -61
  12. data/doc/rdoc/classes/Capcode.html +0 -1076
  13. data/doc/rdoc/classes/Capcode/Base.html +0 -136
  14. data/doc/rdoc/classes/Capcode/Configuration.html +0 -290
  15. data/doc/rdoc/classes/Capcode/HTTPError.html +0 -148
  16. data/doc/rdoc/classes/Capcode/Helpers.html +0 -674
  17. data/doc/rdoc/classes/Capcode/Helpers/Authorization.html +0 -219
  18. data/doc/rdoc/classes/Capcode/Resource.html +0 -111
  19. data/doc/rdoc/classes/Capcode/StaticFiles.html +0 -199
  20. data/doc/rdoc/classes/Capcode/Views.html +0 -112
  21. data/doc/rdoc/created.rid +0 -1
  22. data/doc/rdoc/files/AUTHORS.html +0 -107
  23. data/doc/rdoc/files/COPYING.html +0 -531
  24. data/doc/rdoc/files/README_rdoc.html +0 -887
  25. data/doc/rdoc/files/lib/capcode/base/db_rb.html +0 -101
  26. data/doc/rdoc/files/lib/capcode/configuration_rb.html +0 -101
  27. data/doc/rdoc/files/lib/capcode/filters_rb.html +0 -101
  28. data/doc/rdoc/files/lib/capcode/helpers/auth_rb.html +0 -101
  29. data/doc/rdoc/files/lib/capcode/render/text_rb.html +0 -101
  30. data/doc/rdoc/files/lib/capcode_rb.html +0 -144
  31. data/doc/rdoc/fr_class_index.html +0 -35
  32. data/doc/rdoc/fr_file_index.html +0 -35
  33. data/doc/rdoc/fr_method_index.html +0 -56
  34. data/doc/rdoc/index.html +0 -24
  35. data/doc/rdoc/rdoc-style.css +0 -208
  36. data/lib/capcode.rbSAVE +0 -881
@@ -1,1076 +0,0 @@
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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: Capcode</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">Capcode</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../files/lib/capcode_rb.html">
59
- lib/capcode.rb
60
- </a>
61
- <br />
62
- <a href="../files/lib/capcode/base/db_rb.html">
63
- lib/capcode/base/db.rb
64
- </a>
65
- <br />
66
- <a href="../files/lib/capcode/configuration_rb.html">
67
- lib/capcode/configuration.rb
68
- </a>
69
- <br />
70
- <a href="../files/lib/capcode/filters_rb.html">
71
- lib/capcode/filters.rb
72
- </a>
73
- <br />
74
- <a href="../files/lib/capcode/render/text_rb.html">
75
- lib/capcode/render/text.rb
76
- </a>
77
- <br />
78
- <a href="../files/lib/capcode/helpers/auth_rb.html">
79
- lib/capcode/helpers/auth.rb
80
- </a>
81
- <br />
82
- </td>
83
- </tr>
84
-
85
- </table>
86
- </div>
87
- <!-- banner header -->
88
-
89
- <div id="bodyContent">
90
-
91
-
92
-
93
- <div id="contextContent">
94
-
95
-
96
-
97
- </div>
98
-
99
- <div id="method-list">
100
- <h3 class="section-bar">Methods</h3>
101
-
102
- <div class="name-list">
103
- <a href="#M000001">Route</a>&nbsp;&nbsp;
104
- <a href="#M000010">application</a>&nbsp;&nbsp;
105
- <a href="#M000014">before_filter</a>&nbsp;&nbsp;
106
- <a href="#M000003">env</a>&nbsp;&nbsp;
107
- <a href="#M000009">http_authentication</a>&nbsp;&nbsp;
108
- <a href="#M000012">logger</a>&nbsp;&nbsp;
109
- <a href="#M000007">map</a>&nbsp;&nbsp;
110
- <a href="#M000002">params</a>&nbsp;&nbsp;
111
- <a href="#M000005">request</a>&nbsp;&nbsp;
112
- <a href="#M000006">response</a>&nbsp;&nbsp;
113
- <a href="#M000011">run</a>&nbsp;&nbsp;
114
- <a href="#M000004">session</a>&nbsp;&nbsp;
115
- <a href="#M000013">set</a>&nbsp;&nbsp;
116
- <a href="#M000008">use</a>&nbsp;&nbsp;
117
- </div>
118
- </div>
119
-
120
- </div>
121
-
122
-
123
- <!-- if includes -->
124
- <div id="includes">
125
- <h3 class="section-bar">Included Modules</h3>
126
-
127
- <div id="includes-list">
128
- <span class="include-name">Rack</span>
129
- <span class="include-name"><a href="Capcode/Helpers.html">Capcode::Helpers</a></span>
130
- <span class="include-name"><a href="Capcode/Views.html">Capcode::Views</a></span>
131
- </div>
132
- </div>
133
-
134
- <div id="section">
135
-
136
- <div id="class-list">
137
- <h3 class="section-bar">Classes and Modules</h3>
138
-
139
- Module <a href="Capcode/Helpers.html" class="link">Capcode::Helpers</a><br />
140
- Module <a href="Capcode/Resource.html" class="link">Capcode::Resource</a><br />
141
- Module <a href="Capcode/Views.html" class="link">Capcode::Views</a><br />
142
- Class <a href="Capcode/Base.html" class="link">Capcode::Base</a><br />
143
- Class <a href="Capcode/Configuration.html" class="link">Capcode::Configuration</a><br />
144
- Class <a href="Capcode/HTTPError.html" class="link">Capcode::HTTPError</a><br />
145
- Class <a href="Capcode/StaticFiles.html" class="link">Capcode::StaticFiles</a><br />
146
-
147
- </div>
148
-
149
- <div id="constants-list">
150
- <h3 class="section-bar">Constants</h3>
151
-
152
- <div class="name-list">
153
- <table summary="Constants">
154
- <tr class="top-aligned-row context-row">
155
- <td class="context-item-name">Route</td>
156
- <td>=</td>
157
- <td class="context-item-value">Capcode::Route(nil)</td>
158
- </tr>
159
- </table>
160
- </div>
161
- </div>
162
-
163
-
164
-
165
- <div id="attribute-list">
166
- <h3 class="section-bar">Attributes</h3>
167
-
168
- <div class="name-list">
169
- <table>
170
- <tr class="top-aligned-row context-row">
171
- <td class="context-item-name">__auth__</td>
172
- <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
173
- <td class="context-item-desc"></td>
174
- </tr>
175
- </table>
176
- </div>
177
- </div>
178
-
179
-
180
-
181
- <!-- if method_list -->
182
- <div id="methods">
183
- <h3 class="section-bar">Public Class methods</h3>
184
-
185
- <div id="method-M000001" class="method-detail">
186
- <a name="M000001"></a>
187
-
188
- <div class="method-heading">
189
- <a href="#M000001" class="method-signature">
190
- <span class="method-name">Route</span><span class="method-args">(*routes_paths)</span>
191
- </a>
192
- </div>
193
-
194
- <div class="method-description">
195
- <p>
196
- Add routes to a controller class
197
- </p>
198
- <pre>
199
- module Capcode
200
- class Hello &lt; Route '/hello/(.*)', '/hello/([^#]*)#(.*)'
201
- def get( arg1, arg2 )
202
- ...
203
- end
204
- end
205
- end
206
- </pre>
207
- <p>
208
- In the <tt>get</tt> method, you will receive the maximum of parameters
209
- declared by the routes. In this example, you will receive 2 parameters. So
210
- if you go to <tt>/hello/world#friend</tt> then <tt>arg1</tt> will be <a
211
- href="Capcode.html#M000013">set</a> to <tt>world</tt> and <tt>arg2</tt>
212
- will be <a href="Capcode.html#M000013">set</a> to <tt>friend</tt>. Now if
213
- you go to <tt>/hello/you</tt>, then <tt>arg1</tt> will be <a
214
- href="Capcode.html#M000013">set</a> to <tt>you</tt> and <tt>arg2</tt> will
215
- be <a href="Capcode.html#M000013">set</a> to <tt>nil</tt>
216
- </p>
217
- <p>
218
- If the regexp in the route does not match, all arguments will be
219
- <tt>nil</tt>
220
- </p>
221
- <p><a class="source-toggle" href="#"
222
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
223
- <div class="method-source-code" id="M000001-source">
224
- <pre>
225
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 396</span>
226
- 396: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Route</span> <span class="ruby-operator">*</span><span class="ruby-identifier">routes_paths</span>
227
- 397: <span class="ruby-identifier">create_path</span> = <span class="ruby-identifier">routes_paths</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">nil?</span>
228
- 398: <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span> {
229
- 399: <span class="ruby-identifier">meta_def</span>(<span class="ruby-identifier">:__urls__</span>) {
230
- 400: <span class="ruby-identifier">routes_paths</span> = [<span class="ruby-value str">'/'</span><span class="ruby-operator">+</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/^Capcode::/</span>, <span class="ruby-value str">&quot;&quot;</span> ).<span class="ruby-identifier">underscore</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">create_path</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
231
- 401: <span class="ruby-comment cmt"># &lt; Route '/hello/world/([^\/]*)/id(\d*)', '/hello/(.*)', :agent =&gt; /Songbird (\d\.\d)[\d\/]*?/</span>
232
- 402: <span class="ruby-comment cmt"># # =&gt; [ {</span>
233
- 403: <span class="ruby-comment cmt"># '/hello/world' =&gt; {</span>
234
- 404: <span class="ruby-comment cmt"># :regexp =&gt; '([^\/]*)/id(\d*)',</span>
235
- 405: <span class="ruby-comment cmt"># :route =&gt; '/hello/world/([^\/]*)/id(\d*)',</span>
236
- 406: <span class="ruby-comment cmt"># :nargs =&gt; 2</span>
237
- 407: <span class="ruby-comment cmt"># },</span>
238
- 408: <span class="ruby-comment cmt"># '/hello/world' =&gt; {</span>
239
- 409: <span class="ruby-comment cmt"># :regexp =&gt; '(.*)',</span>
240
- 410: <span class="ruby-comment cmt"># :route =&gt; '/hello/(.*)',</span>
241
- 411: <span class="ruby-comment cmt"># :nargs =&gt; 1</span>
242
- 412: <span class="ruby-comment cmt"># }</span>
243
- 413: <span class="ruby-comment cmt"># },</span>
244
- 414: <span class="ruby-comment cmt"># 2, </span>
245
- 415: <span class="ruby-comment cmt"># &lt;Capcode::Klass&gt;, </span>
246
- 416: <span class="ruby-comment cmt"># {:agent =&gt; /Songbird (\d\.\d)[\d\/]*?/} ]</span>
247
- 417: <span class="ruby-identifier">hash_of_routes</span> = {}
248
- 418: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-value">0</span>
249
- 419: <span class="ruby-identifier">routes_paths</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
250
- 420: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_route_path</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
251
- 421: <span class="ruby-identifier">m</span> = <span class="ruby-regexp re">/\/([^\/]*\(.*)/</span>.<span class="ruby-identifier">match</span>( <span class="ruby-identifier">current_route_path</span> )
252
- 422: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">nil?</span>
253
- 423: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already defined with regexp `#{hash_of_routes[current_route_path]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
254
- 424: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">current_route_path</span>] = {
255
- 425: <span class="ruby-identifier">:regexp</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">''</span>,
256
- 426: <span class="ruby-identifier">:route</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">current_route_path</span>,
257
- 427: <span class="ruby-identifier">:nargs</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
258
- 428: }
259
- 429: <span class="ruby-keyword kw">else</span>
260
- 430: <span class="ruby-identifier">_pre</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
261
- 431: <span class="ruby-identifier">_pre</span> = <span class="ruby-value str">&quot;/&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_pre</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
262
- 432: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{_pre}' already defined with regexp `#{hash_of_routes[_pre]}' !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">_pre</span>)
263
- 433: <span class="ruby-identifier">captures_for_routes</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>]).<span class="ruby-identifier">number_of_captures</span>
264
- 434:
265
- 435: <span class="ruby-identifier">hash_of_routes</span>[<span class="ruby-identifier">_pre</span>] = {
266
- 436: <span class="ruby-identifier">:regexp</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">captures</span>[<span class="ruby-value">0</span>],
267
- 437: <span class="ruby-identifier">:route</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">current_route_path</span>,
268
- 438: <span class="ruby-identifier">:nargs</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">captures_for_routes</span>
269
- 439: }
270
- 440: <span class="ruby-identifier">max_captures_for_routes</span> = <span class="ruby-identifier">captures_for_routes</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">max_captures_for_routes</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">captures_for_routes</span>
271
- 441: <span class="ruby-keyword kw">end</span>
272
- 442: <span class="ruby-keyword kw">else</span>
273
- 443: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">ParameterError</span>, <span class="ruby-value str">&quot;Bad route declaration !&quot;</span>, <span class="ruby-identifier">caller</span>
274
- 444: <span class="ruby-keyword kw">end</span>
275
- 445: <span class="ruby-keyword kw">end</span>
276
- 446: [<span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-keyword kw">self</span>]
277
- 447: }
278
- 448:
279
- 449: <span class="ruby-comment cmt"># Hash containing all the request parameters (GET or POST)</span>
280
- 450: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
281
- 451: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
282
- 452: <span class="ruby-keyword kw">end</span>
283
- 453:
284
- 454: <span class="ruby-comment cmt"># Hash containing all the environment variables</span>
285
- 455: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
286
- 456: <span class="ruby-ivar">@env</span>
287
- 457: <span class="ruby-keyword kw">end</span>
288
- 458:
289
- 459: <span class="ruby-comment cmt"># Session hash</span>
290
- 460: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
291
- 461: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
292
- 462: <span class="ruby-keyword kw">end</span>
293
- 463:
294
- 464: <span class="ruby-comment cmt"># Return the Rack::Request object</span>
295
- 465: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
296
- 466: <span class="ruby-ivar">@request</span>
297
- 467: <span class="ruby-keyword kw">end</span>
298
- 468:
299
- 469: <span class="ruby-comment cmt"># Return the Rack::Response object</span>
300
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
301
- 471: <span class="ruby-ivar">@response</span>
302
- 472: <span class="ruby-keyword kw">end</span>
303
- 473:
304
- 474: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>( <span class="ruby-identifier">e</span> ) <span class="ruby-comment cmt">#:nodoc:</span>
305
- 475: <span class="ruby-ivar">@env</span> = <span class="ruby-identifier">e</span>
306
- 476: <span class="ruby-ivar">@response</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Response</span>.<span class="ruby-identifier">new</span>
307
- 477: <span class="ruby-ivar">@request</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Request</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@env</span>)
308
- 478:
309
- 479: <span class="ruby-comment cmt"># Check authz</span>
310
- 480: <span class="ruby-identifier">authz_options</span> = <span class="ruby-keyword kw">nil</span>
311
- 481: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span> <span class="ruby-keyword kw">and</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
312
- 482: <span class="ruby-identifier">authz_options</span> = <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>[<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>]<span class="ruby-operator">||</span><span class="ruby-keyword kw">nil</span>
313
- 483: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
314
- 484: <span class="ruby-identifier">route</span> = <span class="ruby-keyword kw">nil</span>
315
- 485:
316
- 486: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">__auth__</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span>, <span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
317
- 487: <span class="ruby-identifier">regexp</span> = <span class="ruby-node">&quot;^#{r.gsub(/\/$/, &quot;&quot;)}([/]{1}.*)?$&quot;</span>
318
- 488: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">regexp</span>).<span class="ruby-identifier">match</span>( <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span> )
319
- 489: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">route</span>.<span class="ruby-identifier">size</span>
320
- 490: <span class="ruby-identifier">route</span> = <span class="ruby-identifier">r</span>
321
- 491: <span class="ruby-identifier">authz_options</span> = <span class="ruby-identifier">o</span>
322
- 492: <span class="ruby-keyword kw">end</span>
323
- 493: <span class="ruby-keyword kw">end</span>
324
- 494: <span class="ruby-keyword kw">end</span>
325
- 495: <span class="ruby-keyword kw">end</span>
326
- 496: <span class="ruby-keyword kw">end</span>
327
- 497:
328
- 498: <span class="ruby-identifier">r</span> = <span class="ruby-identifier">catch</span>(<span class="ruby-identifier">:halt</span>) {
329
- 499: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">authz_options</span>.<span class="ruby-identifier">nil?</span>
330
- 500: <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:type</span>], <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>], <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:realm</span>] ) {
331
- 501: <span class="ruby-identifier">authz_options</span>[<span class="ruby-identifier">:autz</span>]
332
- 502: }
333
- 503: <span class="ruby-keyword kw">end</span>
334
- 504:
335
- 505: <span class="ruby-identifier">max_match_size</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">1</span>]
336
- 506: <span class="ruby-identifier">match_distance</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">1</span>]
337
- 507:
338
- 508: <span class="ruby-identifier">result_route</span> = <span class="ruby-keyword kw">nil</span>
339
- 509: <span class="ruby-identifier">result_nargs</span> = <span class="ruby-keyword kw">nil</span>
340
- 510: <span class="ruby-identifier">result_args</span> = []
341
- 511:
342
- 512: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">__urls__</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">route</span>, <span class="ruby-identifier">data</span><span class="ruby-operator">|</span>
343
- 513: <span class="ruby-identifier">regexp</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;^&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">data</span>[<span class="ruby-identifier">:route</span>]<span class="ruby-operator">+</span><span class="ruby-value str">&quot;$&quot;</span>)
344
- 514:
345
- 515: <span class="ruby-identifier">matching</span> = <span class="ruby-identifier">regexp</span>.<span class="ruby-identifier">match</span>(<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path</span>)
346
- 516: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">nil?</span>
347
- 517:
348
- 518: <span class="ruby-identifier">result_args</span> = <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">to_a</span>
349
- 519: <span class="ruby-identifier">result_args</span>.<span class="ruby-identifier">shift</span>
350
- 520: <span class="ruby-identifier">match_size</span> = <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
351
- 521:
352
- 522: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match_size</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">max_match_size</span>
353
- 523: <span class="ruby-comment cmt"># OK Terminé</span>
354
- 524: <span class="ruby-identifier">result_route</span> = <span class="ruby-identifier">data</span>[<span class="ruby-identifier">:route</span>]
355
- 525: <span class="ruby-identifier">result_nargs</span> = <span class="ruby-identifier">data</span>[<span class="ruby-identifier">:nargs</span>]
356
- 526:
357
- 527: <span class="ruby-keyword kw">break</span>
358
- 528: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">max_match_size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">match_size</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">match_distance</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max_match_size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">match_size</span>
359
- 529: <span class="ruby-identifier">match_distance</span> = <span class="ruby-identifier">max_match_size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">match_size</span>
360
- 530:
361
- 531: <span class="ruby-identifier">result_route</span> = <span class="ruby-identifier">data</span>[<span class="ruby-identifier">:route</span>]
362
- 532: <span class="ruby-identifier">result_nargs</span> = <span class="ruby-identifier">data</span>[<span class="ruby-identifier">:nargs</span>]
363
- 533: <span class="ruby-keyword kw">end</span>
364
- 534: <span class="ruby-keyword kw">end</span>
365
- 535:
366
- 536: <span class="ruby-keyword kw">return</span> [<span class="ruby-value">404</span>, {<span class="ruby-value str">'Content-Type'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text/plain'</span>}, <span class="ruby-node">&quot;Not Found: #{@request.path}&quot;</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result_route</span>.<span class="ruby-identifier">nil?</span>
367
- 537:
368
- 538: <span class="ruby-identifier">result_args</span> = <span class="ruby-identifier">result_args</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">max_match_size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">result_nargs</span>)
369
- 539:
370
- 540: <span class="ruby-identifier">filter_output</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">execute</span>( <span class="ruby-keyword kw">self</span> )
371
- 541:
372
- 542: <span class="ruby-keyword kw">if</span>( <span class="ruby-identifier">filter_output</span>.<span class="ruby-identifier">nil?</span> )
373
- 543: <span class="ruby-comment cmt"># case @env[&quot;REQUEST_METHOD&quot;]</span>
374
- 544: <span class="ruby-comment cmt"># when &quot;GET&quot; </span>
375
- 545: <span class="ruby-comment cmt"># get( *args )</span>
376
- 546: <span class="ruby-comment cmt"># when &quot;POST&quot;</span>
377
- 547: <span class="ruby-comment cmt"># _method = params.delete( &quot;_method&quot; ) { |_| &quot;post&quot; }</span>
378
- 548: <span class="ruby-comment cmt"># send( _method.downcase.to_sym, *args )</span>
379
- 549: <span class="ruby-comment cmt"># else</span>
380
- 550: <span class="ruby-comment cmt"># _method = @env[&quot;REQUEST_METHOD&quot;]</span>
381
- 551: <span class="ruby-comment cmt"># send( _method.downcase.to_sym, *args )</span>
382
- 552: <span class="ruby-comment cmt"># end</span>
383
- 553: <span class="ruby-keyword kw">begin</span>
384
- 554: <span class="ruby-identifier">_method</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>( <span class="ruby-value str">&quot;_method&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">_</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@env</span>[<span class="ruby-value str">&quot;REQUEST_METHOD&quot;</span>] }
385
- 555: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">method_defined?</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span> )
386
- 556: <span class="ruby-comment cmt"># send( _method.downcase.to_sym, *args )</span>
387
- 557: <span class="ruby-identifier">send</span>( <span class="ruby-identifier">_method</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">result_args</span> )
388
- 558: <span class="ruby-keyword kw">else</span>
389
- 559: <span class="ruby-comment cmt"># any( *args )</span>
390
- 560: <span class="ruby-identifier">any</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">result_args</span> )
391
- 561: <span class="ruby-keyword kw">end</span>
392
- 562: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
393
- 563: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">class</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>
394
- 564: <span class="ruby-keyword kw">end</span>
395
- 565: <span class="ruby-keyword kw">else</span>
396
- 566: <span class="ruby-identifier">filter_output</span>
397
- 567: <span class="ruby-keyword kw">end</span>
398
- 568: }
399
- 569:
400
- 570: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
401
- 571: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[0]</span>
402
- 572: <span class="ruby-comment cmt">#r[1].each do |k,v|</span>
403
- 573: <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</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>
404
- 574: <span class="ruby-ivar">@response</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
405
- 575: <span class="ruby-keyword kw">end</span>
406
- 576: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">shift</span> <span class="ruby-comment cmt">#r[2]</span>
407
- 577: <span class="ruby-keyword kw">else</span>
408
- 578: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">r</span>
409
- 579: <span class="ruby-keyword kw">end</span>
410
- 580:
411
- 581: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">finish</span>
412
- 582: <span class="ruby-keyword kw">end</span>
413
- 583:
414
- 584: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>
415
- 585: <span class="ruby-identifier">include</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Views</span>
416
- 586: }
417
- 587: <span class="ruby-keyword kw">end</span>
418
- </pre>
419
- </div>
420
- </div>
421
- </div>
422
-
423
- <div id="method-M000010" class="method-detail">
424
- <a name="M000010"></a>
425
-
426
- <div class="method-heading">
427
- <a href="#M000010" class="method-signature">
428
- <span class="method-name">application</span><span class="method-args">( args = {} ) {|self| ...}</span>
429
- </a>
430
- </div>
431
-
432
- <div class="method-description">
433
- <p>
434
- Return the Rack App.
435
- </p>
436
- <p>
437
- Options : see <a
438
- href="Capcode/Configuration.html#M000028">Capcode::Configuration.set</a>
439
- </p>
440
- <p>
441
- Options <a href="Capcode.html#M000013">set</a> here replace the ones <a
442
- href="Capcode.html#M000013">set</a> globally
443
- </p>
444
- <p><a class="source-toggle" href="#"
445
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
446
- <div class="method-source-code" id="M000010-source">
447
- <pre>
448
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 656</span>
449
- 656: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application</span>( <span class="ruby-identifier">args</span> = {} )
450
- 657: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
451
- 658: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">print_debug</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
452
- 659:
453
- 660: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
454
- 661: <span class="ruby-keyword kw">not</span>( <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">k</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Capcode/</span> ) <span class="ruby-keyword kw">or</span> [
455
- 662: <span class="ruby-value str">&quot;Filter&quot;</span>,
456
- 663: <span class="ruby-value str">&quot;Helpers&quot;</span>,
457
- 664: <span class="ruby-value str">&quot;RouteError&quot;</span>,
458
- 665: <span class="ruby-value str">&quot;Views&quot;</span>,
459
- 666: <span class="ruby-value str">&quot;ParameterError&quot;</span>,
460
- 667: <span class="ruby-value str">&quot;HTTPError&quot;</span>,
461
- 668: <span class="ruby-value str">&quot;StaticFiles&quot;</span>,
462
- 669: <span class="ruby-value str">&quot;Configuration&quot;</span>,
463
- 670: <span class="ruby-value str">&quot;MissingLibrary&quot;</span>,
464
- 671: <span class="ruby-value str">&quot;Route&quot;</span>,
465
- 672: <span class="ruby-value str">&quot;RenderError&quot;</span>
466
- 673: ].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">k</span>)
467
- 674: }.<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-operator">|</span>
468
- 675: <span class="ruby-keyword kw">begin</span>
469
- 676: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.public_methods(true).include?( '__urls__' )&quot;</span>
470
- 677: <span class="ruby-identifier">hash_of_routes</span>, <span class="ruby-identifier">max_captures_for_routes</span>, <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">eval</span> <span class="ruby-node">&quot;Capcode::#{k}.__urls__&quot;</span>
471
- 678: <span class="ruby-identifier">hash_of_routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">current_route_path</span><span class="ruby-operator">|</span>
472
- 679: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RouteError</span>, <span class="ruby-node">&quot;Route `#{current_route_path}' already define !&quot;</span>, <span class="ruby-identifier">caller</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">current_route_path</span>)
473
- 680: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>[<span class="ruby-identifier">current_route_path</span>] = <span class="ruby-identifier">klass</span>
474
- 681: <span class="ruby-keyword kw">end</span>
475
- 682: <span class="ruby-keyword kw">end</span>
476
- 683: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
477
- 684: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
478
- 685: <span class="ruby-keyword kw">end</span>
479
- 686: <span class="ruby-keyword kw">end</span>
480
- 687:
481
- 688: <span class="ruby-comment cmt"># Set Static directory</span>
482
- 689: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> = (<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>)[<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;/&quot;</span>)<span class="ruby-operator">?</span><span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>)<span class="ruby-operator">:</span><span class="ruby-value str">&quot;/&quot;</span><span class="ruby-operator">+</span><span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
483
- 690:
484
- 691: <span class="ruby-comment cmt"># Initialize Rack App</span>
485
- 692: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Map routes.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
486
- 693: <span class="ruby-comment cmt"># app = Rack::URLMap.new(Capcode.routes)</span>
487
- 694: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Ext</span><span class="ruby-operator">::</span><span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">URLMap</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>)
488
- 695: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Initialize static directory (#{Capcode.static}) in #{File.expand_path(Capcode::Configuration.get(:root))}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
489
- 696: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Static</span>.<span class="ruby-identifier">new</span>(
490
- 697: <span class="ruby-identifier">app</span>,
491
- 698: <span class="ruby-comment cmt">#:urls =&gt; [@@__STATIC_DIR], </span>
492
- 699: <span class="ruby-identifier">:urls</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>],
493
- 700: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>))
494
- 701: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:static</span>).<span class="ruby-identifier">nil?</span>
495
- 702: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Initialize session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
496
- 703: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span><span class="ruby-operator">::</span><span class="ruby-constant">Cookie</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:session</span>) )
497
- 704: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">StaticFiles</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
498
- 705: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
499
- 706: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ContentLength</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
500
- 707: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Lint</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
501
- 708: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ShowExceptions</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">app</span>)
502
- 709: <span class="ruby-comment cmt">#app = Rack::Reloader.new(app) ## -- NE RELOAD QUE capcode.rb -- So !!!</span>
503
- 710: <span class="ruby-identifier">app</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">CommonLogger</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-ivar">@cclogger</span> = <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>)) )
504
- 711:
505
- 712: <span class="ruby-identifier">middlewares</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mw</span><span class="ruby-operator">|</span>
506
- 713: <span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span> = <span class="ruby-identifier">mw</span>
507
- 714: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Load middleware #{middleware}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
508
- 715: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>
509
- 716: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">middleware</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> )
510
- 717: <span class="ruby-keyword kw">else</span>
511
- 718: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">middleware</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
512
- 719: <span class="ruby-keyword kw">end</span>
513
- 720: <span class="ruby-keyword kw">end</span>
514
- 721:
515
- 722: <span class="ruby-comment cmt"># Start database</span>
516
- 723: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">&quot;db_connect&quot;</span>
517
- 724: <span class="ruby-identifier">db_connect</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:db_config</span>), <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:log</span>) )
518
- 725: <span class="ruby-keyword kw">end</span>
519
- 726:
520
- 727: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
521
- 728: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;** Execute block&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
522
- 729: <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> )
523
- 730: <span class="ruby-keyword kw">end</span>
524
- 731:
525
- 732: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">app</span>
526
- 733: <span class="ruby-keyword kw">end</span>
527
- </pre>
528
- </div>
529
- </div>
530
- </div>
531
-
532
- <div id="method-M000014" class="method-detail">
533
- <a name="M000014"></a>
534
-
535
- <div class="method-heading">
536
- <a href="#M000014" class="method-signature">
537
- <span class="method-name">before_filter</span><span class="method-args">( action, opts = {} )</span>
538
- </a>
539
- </div>
540
-
541
- <div class="method-description">
542
- <p>
543
- Add a before filter :
544
- </p>
545
- <pre>
546
- module Capcode
547
- before_filter :my_global_action
548
- before_filter :need_login, :except =&gt; [:Login]
549
- before_filter :check_mail, :only =&gt; [:MailBox]
550
- # ...
551
- end
552
- </pre>
553
- <p>
554
- If the action return nil, the normal get or post will be executed, else no.
555
- </p>
556
- <p><a class="source-toggle" href="#"
557
- onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
558
- <div class="method-source-code" id="M000014-source">
559
- <pre>
560
- <span class="ruby-comment cmt"># File lib/capcode/filters.rb, line 14</span>
561
- 14: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">before_filter</span>( <span class="ruby-identifier">action</span>, <span class="ruby-identifier">opts</span> = {} )
562
- 15: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">filters</span>[<span class="ruby-identifier">action</span>] = { }
563
- 16: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">ordered_actions</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">action</span>
564
- 17:
565
- 18: <span class="ruby-identifier">opts</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>
566
- 19: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Filter</span>.<span class="ruby-identifier">filters</span>[<span class="ruby-identifier">action</span>][<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
567
- 20: <span class="ruby-keyword kw">end</span>
568
- 21: <span class="ruby-keyword kw">end</span>
569
- </pre>
570
- </div>
571
- </div>
572
- </div>
573
-
574
- <div id="method-M000003" class="method-detail">
575
- <a name="M000003"></a>
576
-
577
- <div class="method-heading">
578
- <a href="#M000003" class="method-signature">
579
- <span class="method-name">env</span><span class="method-args">()</span>
580
- </a>
581
- </div>
582
-
583
- <div class="method-description">
584
- <p>
585
- Hash containing all the environment variables
586
- </p>
587
- <p><a class="source-toggle" href="#"
588
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
589
- <div class="method-source-code" id="M000003-source">
590
- <pre>
591
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 455</span>
592
- 455: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env</span>
593
- 456: <span class="ruby-ivar">@env</span>
594
- 457: <span class="ruby-keyword kw">end</span>
595
- </pre>
596
- </div>
597
- </div>
598
- </div>
599
-
600
- <div id="method-M000009" class="method-detail">
601
- <a name="M000009"></a>
602
-
603
- <div class="method-heading">
604
- <a href="#M000009" class="method-signature">
605
- <span class="method-name">http_authentication</span><span class="method-args">( opts = {}, &amp;b )</span>
606
- </a>
607
- </div>
608
-
609
- <div class="method-description">
610
- <p>
611
- Allow you to add and HTTP Authentication (Basic or Digest) to controllers
612
- for or specific route
613
- </p>
614
- <p>
615
- Options :
616
- </p>
617
- <ul>
618
- <li><tt>:type</tt> : Authentication type (<tt>:basic</tt> or <tt>:digest</tt>)
619
- - default : <tt>:basic</tt>
620
-
621
- </li>
622
- <li><tt>:realm</tt> : realm ;) - default : &quot;Capcode.app&quot;
623
-
624
- </li>
625
- <li><tt>:opaque</tt> : Your secret passphrase. You MUST <a
626
- href="Capcode.html#M000013">set</a> it if you <a
627
- href="Capcode.html#M000008">use</a> Digest Auth - default :
628
- &quot;opaque&quot;
629
-
630
- </li>
631
- <li><tt>:routes</tt> : Routes - default : &quot;/&quot;
632
-
633
- </li>
634
- </ul>
635
- <p>
636
- The block must return a Hash of username =&gt; password like that :
637
- </p>
638
- <pre>
639
- {
640
- &quot;user1&quot; =&gt; &quot;pass1&quot;,
641
- &quot;user2&quot; =&gt; &quot;pass2&quot;,
642
- # ...
643
- }
644
- </pre>
645
- <p><a class="source-toggle" href="#"
646
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
647
- <div class="method-source-code" id="M000009-source">
648
- <pre>
649
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 630</span>
650
- 630: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">opts</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
651
- 631: <span class="ruby-identifier">options</span> = {
652
- 632: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:basic</span>,
653
- 633: <span class="ruby-identifier">:realm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;Capcode.app&quot;</span>,
654
- 634: <span class="ruby-identifier">:opaque</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;opaque&quot;</span>,
655
- 635: <span class="ruby-identifier">:routes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;/&quot;</span>
656
- 636: }.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">opts</span> )
657
- 637:
658
- 638: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:autz</span>] = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">call</span>()
659
- 639:
660
- 640: <span class="ruby-ivar">@__auth__</span> <span class="ruby-operator">||=</span> {}
661
- 641:
662
- 642: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Array</span>
663
- 643: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
664
- 644: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">r</span>] = <span class="ruby-identifier">options</span>
665
- 645: <span class="ruby-keyword kw">end</span>
666
- 646: <span class="ruby-keyword kw">else</span>
667
- 647: <span class="ruby-ivar">@__auth__</span>[<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:routes</span>]] = <span class="ruby-identifier">options</span>
668
- 648: <span class="ruby-keyword kw">end</span>
669
- 649: <span class="ruby-keyword kw">end</span>
670
- </pre>
671
- </div>
672
- </div>
673
- </div>
674
-
675
- <div id="method-M000012" class="method-detail">
676
- <a name="M000012"></a>
677
-
678
- <div class="method-heading">
679
- <a href="#M000012" class="method-signature">
680
- <span class="method-name">logger</span><span class="method-args">()</span>
681
- </a>
682
- </div>
683
-
684
- <div class="method-description">
685
- <p><a class="source-toggle" href="#"
686
- onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
687
- <div class="method-source-code" id="M000012-source">
688
- <pre>
689
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 884</span>
690
- 884: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">logger</span>
691
- 885: <span class="ruby-ivar">@cclogger</span>
692
- 886: <span class="ruby-keyword kw">end</span>
693
- </pre>
694
- </div>
695
- </div>
696
- </div>
697
-
698
- <div id="method-M000007" class="method-detail">
699
- <a name="M000007"></a>
700
-
701
- <div class="method-heading">
702
- <a href="#M000007" class="method-signature">
703
- <span class="method-name">map</span><span class="method-args">( route ) {|| ...}</span>
704
- </a>
705
- </div>
706
-
707
- <div class="method-description">
708
- <p>
709
- This method help you to <a href="Capcode.html#M000007">map</a> and URL to a
710
- Rack or What you want Helper
711
- </p>
712
- <pre>
713
- Capcode.map( &quot;/file&quot; ) do
714
- Rack::File.new( &quot;.&quot; )
715
- end
716
- </pre>
717
- <p><a class="source-toggle" href="#"
718
- onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
719
- <div class="method-source-code" id="M000007-source">
720
- <pre>
721
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 595</span>
722
- 595: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">map</span>( <span class="ruby-identifier">route</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">b</span> )
723
- 596: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>[<span class="ruby-identifier">route</span>] = <span class="ruby-keyword kw">yield</span>
724
- 597: <span class="ruby-keyword kw">end</span>
725
- </pre>
726
- </div>
727
- </div>
728
- </div>
729
-
730
- <div id="method-M000002" class="method-detail">
731
- <a name="M000002"></a>
732
-
733
- <div class="method-heading">
734
- <a href="#M000002" class="method-signature">
735
- <span class="method-name">params</span><span class="method-args">()</span>
736
- </a>
737
- </div>
738
-
739
- <div class="method-description">
740
- <p>
741
- Hash containing all the <a href="Capcode.html#M000005">request</a>
742
- parameters (GET or POST)
743
- </p>
744
- <p><a class="source-toggle" href="#"
745
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
746
- <div class="method-source-code" id="M000002-source">
747
- <pre>
748
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 450</span>
749
- 450: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">params</span>
750
- 451: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
751
- 452: <span class="ruby-keyword kw">end</span>
752
- </pre>
753
- </div>
754
- </div>
755
- </div>
756
-
757
- <div id="method-M000005" class="method-detail">
758
- <a name="M000005"></a>
759
-
760
- <div class="method-heading">
761
- <a href="#M000005" class="method-signature">
762
- <span class="method-name">request</span><span class="method-args">()</span>
763
- </a>
764
- </div>
765
-
766
- <div class="method-description">
767
- <p>
768
- Return the Rack::Request object
769
- </p>
770
- <p><a class="source-toggle" href="#"
771
- onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
772
- <div class="method-source-code" id="M000005-source">
773
- <pre>
774
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 465</span>
775
- 465: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>
776
- 466: <span class="ruby-ivar">@request</span>
777
- 467: <span class="ruby-keyword kw">end</span>
778
- </pre>
779
- </div>
780
- </div>
781
- </div>
782
-
783
- <div id="method-M000006" class="method-detail">
784
- <a name="M000006"></a>
785
-
786
- <div class="method-heading">
787
- <a href="#M000006" class="method-signature">
788
- <span class="method-name">response</span><span class="method-args">()</span>
789
- </a>
790
- </div>
791
-
792
- <div class="method-description">
793
- <p>
794
- Return the Rack::Response object
795
- </p>
796
- <p><a class="source-toggle" href="#"
797
- onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
798
- <div class="method-source-code" id="M000006-source">
799
- <pre>
800
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 470</span>
801
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>
802
- 471: <span class="ruby-ivar">@response</span>
803
- 472: <span class="ruby-keyword kw">end</span>
804
- </pre>
805
- </div>
806
- </div>
807
- </div>
808
-
809
- <div id="method-M000011" class="method-detail">
810
- <a name="M000011"></a>
811
-
812
- <div class="method-heading">
813
- <a href="#M000011" class="method-signature">
814
- <span class="method-name">run</span><span class="method-args">( args = {} ) {|self| ...}</span>
815
- </a>
816
- </div>
817
-
818
- <div class="method-description">
819
- <p>
820
- Start your <a href="Capcode.html#M000010">application</a>.
821
- </p>
822
- <p>
823
- Options : see <a
824
- href="Capcode/Configuration.html#M000028">Capcode::Configuration.set</a>
825
- </p>
826
- <p>
827
- Options <a href="Capcode.html#M000013">set</a> here replace the ones <a
828
- href="Capcode.html#M000013">set</a> globally
829
- </p>
830
- <p><a class="source-toggle" href="#"
831
- onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
832
- <div class="method-source-code" id="M000011-source">
833
- <pre>
834
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 740</span>
835
- 740: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>( <span class="ruby-identifier">args</span> = {} )
836
- 741: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">configuration</span>(<span class="ruby-identifier">args</span>)
837
- 742:
838
- 743: <span class="ruby-comment cmt"># Parse options</span>
839
- 744: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">opts</span><span class="ruby-operator">|</span>
840
- 745: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;Usage: #{File.basename($0)} [options]&quot;</span>
841
- 746: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
842
- 747: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Specific options:&quot;</span>
843
- 748:
844
- 749: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-C&quot;</span>, <span class="ruby-value str">&quot;--console&quot;</span>, <span class="ruby-value str">&quot;Run in console mode with IRB (default: false)&quot;</span> ) {
845
- 750: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:console</span>, <span class="ruby-keyword kw">true</span>
846
- 751: }
847
- 752: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-h&quot;</span>, <span class="ruby-value str">&quot;--host HOSTNAME&quot;</span>, <span class="ruby-node">&quot;Host for web server to bind to (default: #{Capcode::Configuration.get(:host)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
848
- 753: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:host</span>, <span class="ruby-identifier">h</span>
849
- 754: }
850
- 755: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-p&quot;</span>, <span class="ruby-value str">&quot;--port NUM&quot;</span>, <span class="ruby-node">&quot;Port for web server (default: #{Capcode::Configuration.get(:port)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
851
- 756: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:port</span>, <span class="ruby-identifier">p</span>
852
- 757: }
853
- 758: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-d&quot;</span>, <span class="ruby-value str">&quot;--daemonize [true|false]&quot;</span>, <span class="ruby-node">&quot;Daemonize (default: #{Capcode::Configuration.get(:daemonize)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
854
- 759: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:daemonize</span>, <span class="ruby-identifier">d</span>
855
- 760: }
856
- 761: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-r&quot;</span>, <span class="ruby-value str">&quot;--root PATH&quot;</span>, <span class="ruby-node">&quot;Working directory (default: #{Capcode::Configuration.get(:root)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
857
- 762: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:root</span>, <span class="ruby-identifier">w</span>
858
- 763: }
859
- 764: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-s&quot;</span>, <span class="ruby-value str">&quot;--static PATH&quot;</span>, <span class="ruby-node">&quot;Static directory -- relative to the root directory (default: #{Capcode::Configuration.get(:static)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
860
- 765: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:static</span>, <span class="ruby-identifier">r</span>
861
- 766: }
862
- 767: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>( <span class="ruby-value str">&quot;-S&quot;</span>, <span class="ruby-value str">&quot;--server SERVER&quot;</span>, <span class="ruby-node">&quot;Server to use (default: #{Capcode::Configuration.get(:server)})&quot;</span> ) { <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
863
- 768: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">r</span>
864
- 769: }
865
- 770:
866
- 771: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
867
- 772: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;Common options:&quot;</span>
868
- 773:
869
- 774: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-?&quot;</span>, <span class="ruby-value str">&quot;--help&quot;</span>, <span class="ruby-value str">&quot;Show this message&quot;</span>) <span class="ruby-keyword kw">do</span>
870
- 775: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>
871
- 776: <span class="ruby-identifier">exit</span>
872
- 777: <span class="ruby-keyword kw">end</span>
873
- 778: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">&quot;-v&quot;</span>, <span class="ruby-value str">&quot;--version&quot;</span>, <span class="ruby-value str">&quot;Show versions&quot;</span>) <span class="ruby-keyword kw">do</span>
874
- 779: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Capcode version #{Capcode::CAPCOD_VERION} (ruby v#{RUBY_VERSION})&quot;</span>
875
- 780: <span class="ruby-identifier">exit</span>
876
- 781: <span class="ruby-keyword kw">end</span>
877
- 782: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>( <span class="ruby-value str">&quot;-V&quot;</span>, <span class="ruby-value str">&quot;--verbose&quot;</span>, <span class="ruby-value str">&quot;Run in verbose mode&quot;</span> ) <span class="ruby-keyword kw">do</span>
878
- 783: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:verbose</span>, <span class="ruby-keyword kw">true</span>
879
- 784: <span class="ruby-keyword kw">end</span>
880
- 785: <span class="ruby-keyword kw">end</span>
881
- 786:
882
- 787: <span class="ruby-keyword kw">begin</span>
883
- 788: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse!</span> <span class="ruby-constant">ARGV</span>
884
- 789: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ex</span>
885
- 790: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! #{ex.message}&quot;</span>
886
- 791: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** use `#{File.basename($0)} --help` for more details...&quot;</span>
887
- 792: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
888
- 793: <span class="ruby-keyword kw">end</span>
889
- 794:
890
- 795: <span class="ruby-comment cmt"># Run in the Working directory</span>
891
- 796: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Go on root directory (#{File.expand_path(Capcode::Configuration.get(:root))})&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:verbose</span>)
892
- 797: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>( <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:root</span>) ) <span class="ruby-keyword kw">do</span>
893
- 798:
894
- 799: <span class="ruby-comment cmt"># Check that mongrel exists </span>
895
- 800: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
896
- 801: <span class="ruby-keyword kw">begin</span>
897
- 802: <span class="ruby-identifier">require</span> <span class="ruby-value str">'mongrel'</span>
898
- 803: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:mongrel</span>
899
- 804: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
900
- 805: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;!! could not load mongrel. Falling back to webrick.&quot;</span>
901
- 806: <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span> <span class="ruby-identifier">:server</span>, <span class="ruby-identifier">:webrick</span>
902
- 807: <span class="ruby-keyword kw">end</span>
903
- 808: <span class="ruby-keyword kw">end</span>
904
- 809:
905
- 810: <span class="ruby-comment cmt"># From rackup !!!</span>
906
- 811: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:daemonize</span>)
907
- 812: <span class="ruby-keyword kw">if</span> <span class="ruby-regexp re">/java/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-constant">RUBY_PLATFORM</span>).<span class="ruby-identifier">nil?</span>
908
- 813: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">&quot;1.9&quot;</span>
909
- 814: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
910
- 815: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
911
- 816: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span>
912
- 817: <span class="ruby-comment cmt"># Dir.chdir &quot;/&quot;</span>
913
- 818: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span>
914
- 819: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>
915
- 820: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
916
- 821: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>
917
- 822: <span class="ruby-keyword kw">else</span>
918
- 823: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">daemon</span>
919
- 824: <span class="ruby-keyword kw">end</span>
920
- 825: <span class="ruby-keyword kw">else</span>
921
- 826: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;!! daemonize option unavailable on #{RUBY_PLATFORM} platform.&quot;</span>
922
- 827: <span class="ruby-keyword kw">end</span>
923
- 828:
924
- 829: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:pid</span>), <span class="ruby-value str">'w'</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">&quot;#{Process.pid}&quot;</span>) }
925
- 830: <span class="ruby-identifier">at_exit</span> { <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:pid</span>)) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:pid</span>)) }
926
- 831: <span class="ruby-keyword kw">end</span>
927
- 832:
928
- 833: <span class="ruby-identifier">app</span> = <span class="ruby-keyword kw">nil</span>
929
- 834: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
930
- 835: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>) { <span class="ruby-keyword kw">yield</span>( <span class="ruby-keyword kw">self</span> ) }
931
- 836: <span class="ruby-keyword kw">else</span>
932
- 837: <span class="ruby-identifier">app</span> = <span class="ruby-identifier">application</span>(<span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>)
933
- 838: <span class="ruby-keyword kw">end</span>
934
- 839:
935
- 840: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:console</span>)
936
- 841: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Run console...&quot;</span>
937
- 842: <span class="ruby-constant">IRB</span>.<span class="ruby-identifier">start</span>
938
- 843: <span class="ruby-identifier">exit</span>
939
- 844: <span class="ruby-keyword kw">end</span>
940
- 845:
941
- 846: <span class="ruby-comment cmt"># Start server</span>
942
- 847: <span class="ruby-keyword kw">case</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:server</span>).<span class="ruby-identifier">to_s</span>
943
- 848: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;mongrel&quot;</span>
944
- 849: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Mongrel on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
945
- 850: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">Mongrel</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
946
- 851: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span> }
947
- 852: }
948
- 853: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;webrick&quot;</span>
949
- 854: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting WEBrick on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
950
- 855: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">WEBrick</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:BindAddress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
951
- 856: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">shutdown</span> }
952
- 857: }
953
- 858: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;thin&quot;</span>
954
- 859: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Thin on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
955
- 860: <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Handler</span><span class="ruby-operator">::</span><span class="ruby-constant">Thin</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:Port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>), <span class="ruby-identifier">:Host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>)} ) { <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
956
- 861: <span class="ruby-identifier">trap</span> <span class="ruby-value str">&quot;SIGINT&quot;</span>, <span class="ruby-identifier">proc</span> { <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span> }
957
- 862: }
958
- 863: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;unicorn&quot;</span>
959
- 864: <span class="ruby-identifier">require</span> <span class="ruby-value str">'unicorn/launcher'</span>
960
- 865: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Unicorn on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
961
- 866: <span class="ruby-constant">Unicorn</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:listeners</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-node">&quot;#{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>]} )
962
- 867: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;rainbows&quot;</span>
963
- 868: <span class="ruby-identifier">require</span> <span class="ruby-value str">'unicorn/launcher'</span>
964
- 869: <span class="ruby-identifier">require</span> <span class="ruby-value str">'rainbows'</span>
965
- 870: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting Rainbow on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
966
- 871: <span class="ruby-constant">Rainbows</span>.<span class="ruby-identifier">run</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:listeners</span> =<span class="ruby-operator">&gt;</span> [<span class="ruby-node">&quot;#{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>]} )
967
- 872: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;control_tower&quot;</span>
968
- 873: <span class="ruby-identifier">require</span> <span class="ruby-value str">'control_tower'</span>
969
- 874: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;** Starting ControlTower on #{Capcode::Configuration.get(:host)}:#{Capcode::Configuration.get(:port)}&quot;</span>
970
- 875: <span class="ruby-constant">ControlTower</span><span class="ruby-operator">::</span><span class="ruby-constant">Server</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">app</span>, {<span class="ruby-identifier">:host</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:host</span>), <span class="ruby-identifier">:port</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">:port</span>)} ).<span class="ruby-identifier">start</span>
971
- 876: <span class="ruby-keyword kw">end</span>
972
- 877: <span class="ruby-keyword kw">end</span>
973
- 878: <span class="ruby-keyword kw">end</span>
974
- </pre>
975
- </div>
976
- </div>
977
- </div>
978
-
979
- <div id="method-M000004" class="method-detail">
980
- <a name="M000004"></a>
981
-
982
- <div class="method-heading">
983
- <a href="#M000004" class="method-signature">
984
- <span class="method-name">session</span><span class="method-args">()</span>
985
- </a>
986
- </div>
987
-
988
- <div class="method-description">
989
- <p>
990
- Session hash
991
- </p>
992
- <p><a class="source-toggle" href="#"
993
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
994
- <div class="method-source-code" id="M000004-source">
995
- <pre>
996
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 460</span>
997
- 460: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">session</span>
998
- 461: <span class="ruby-ivar">@env</span>[<span class="ruby-value str">'rack.session'</span>]
999
- 462: <span class="ruby-keyword kw">end</span>
1000
- </pre>
1001
- </div>
1002
- </div>
1003
- </div>
1004
-
1005
- <div id="method-M000013" class="method-detail">
1006
- <a name="M000013"></a>
1007
-
1008
- <div class="method-heading">
1009
- <a href="#M000013" class="method-signature">
1010
- <span class="method-name">set</span><span class="method-args">(key, value, opts = {})</span>
1011
- </a>
1012
- </div>
1013
-
1014
- <div class="method-description">
1015
- <p><a class="source-toggle" href="#"
1016
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
1017
- <div class="method-source-code" id="M000013-source">
1018
- <pre>
1019
- <span class="ruby-comment cmt"># File lib/capcode/configuration.rb, line 3</span>
1020
- 3: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">opts</span> = {}); <span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">set</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">opts</span>); <span class="ruby-keyword kw">end</span>
1021
- </pre>
1022
- </div>
1023
- </div>
1024
- </div>
1025
-
1026
- <div id="method-M000008" class="method-detail">
1027
- <a name="M000008"></a>
1028
-
1029
- <div class="method-heading">
1030
- <a href="#M000008" class="method-signature">
1031
- <span class="method-name">use</span><span class="method-args">(middleware, *args, &amp;block)</span>
1032
- </a>
1033
- </div>
1034
-
1035
- <div class="method-description">
1036
- <p>
1037
- This method allow you to <a href="Capcode.html#M000008">use</a> a Rack
1038
- middleware
1039
- </p>
1040
- <p>
1041
- Example :
1042
- </p>
1043
- <pre>
1044
- module Capcode
1045
- ...
1046
- use Rack::Codehighlighter, :coderay, :element =&gt; &quot;pre&quot;,
1047
- :pattern =&gt; /\A:::(\w+)\s*\n/, :logging =&gt; false
1048
- ...
1049
- end
1050
- </pre>
1051
- <p><a class="source-toggle" href="#"
1052
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
1053
- <div class="method-source-code" id="M000008-source">
1054
- <pre>
1055
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 609</span>
1056
- 609: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">use</span>(<span class="ruby-identifier">middleware</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
1057
- 610: <span class="ruby-identifier">middlewares</span> <span class="ruby-operator">&lt;&lt;</span> [<span class="ruby-identifier">middleware</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>]
1058
- 611: <span class="ruby-keyword kw">end</span>
1059
- </pre>
1060
- </div>
1061
- </div>
1062
- </div>
1063
-
1064
-
1065
- </div>
1066
-
1067
-
1068
- </div>
1069
-
1070
-
1071
- <div id="validator-badges">
1072
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1073
- </div>
1074
-
1075
- </body>
1076
- </html>