Capcode 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +7 -2
- data/doc/rdoc/classes/Capcode.html +454 -402
- data/doc/rdoc/classes/Capcode/Configuration.html +21 -21
- data/doc/rdoc/classes/Capcode/Helpers.html +185 -164
- data/doc/rdoc/classes/Capcode/Helpers/Authorization.html +6 -6
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README_rdoc.html +21 -7
- data/doc/rdoc/files/lib/capcode/filters_rb.html +101 -0
- data/doc/rdoc/files/lib/capcode_rb.html +2 -2
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +13 -12
- data/examples/filter.rb +105 -0
- data/lib/capcode.rb +51 -27
- data/lib/capcode/filters.rb +50 -0
- data/lib/capcode/version.rb +1 -1
- metadata +5 -4
@@ -111,7 +111,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
111
111
|
<h3 class="section-bar">Methods</h3>
|
112
112
|
|
113
113
|
<div class="name-list">
|
114
|
-
<a href="#
|
114
|
+
<a href="#M000022">http_authentication</a>
|
115
115
|
</div>
|
116
116
|
</div>
|
117
117
|
|
@@ -133,11 +133,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
133
133
|
<div id="methods">
|
134
134
|
<h3 class="section-bar">Public Instance methods</h3>
|
135
135
|
|
136
|
-
<div id="method-
|
137
|
-
<a name="
|
136
|
+
<div id="method-M000022" class="method-detail">
|
137
|
+
<a name="M000022"></a>
|
138
138
|
|
139
139
|
<div class="method-heading">
|
140
|
-
<a href="#
|
140
|
+
<a href="#M000022" class="method-signature">
|
141
141
|
<span class="method-name">http_authentication</span><span class="method-args">( opts = {}, &b )</span>
|
142
142
|
</a>
|
143
143
|
</div>
|
@@ -173,8 +173,8 @@ The block must return a Hash of username => password like that :
|
|
173
173
|
}
|
174
174
|
</pre>
|
175
175
|
<p><a class="source-toggle" href="#"
|
176
|
-
onclick="toggleCode('
|
177
|
-
<div class="method-source-code" id="
|
176
|
+
onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
|
177
|
+
<div class="method-source-code" id="M000022-source">
|
178
178
|
<pre>
|
179
179
|
<span class="ruby-comment cmt"># File lib/capcode/helpers/auth.rb, line 105</span>
|
180
180
|
105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_authentication</span>( <span class="ruby-identifier">opts</span> = {}, <span class="ruby-operator">&</span><span class="ruby-identifier">b</span> )
|
data/doc/rdoc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Fri, 05 Feb 2010 19:23:09 +0100
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Thu Feb 04 15:27:28 +0100 2010</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -71,7 +71,7 @@
|
|
71
71
|
<div id="description">
|
72
72
|
<h1><a href="../classes/Capcode.html">Capcode</a></h1>
|
73
73
|
<p>
|
74
|
-
Copyright (C) 2009 Gregoire Lejeune
|
74
|
+
Copyright (C) 2009, 2010 Gregoire Lejeune
|
75
75
|
</p>
|
76
76
|
<ul>
|
77
77
|
<li>home : <a href="http://capcode.rubyforge.org">capcode.rubyforge.org</a>
|
@@ -91,6 +91,22 @@ href="http://www.algorithmique.net/capcode">www.algorithmique.net/capcode</a>/
|
|
91
91
|
<a href="../classes/Capcode.html">Capcode</a> is a web microframework
|
92
92
|
</p>
|
93
93
|
<h2>FEATURES/PROBLEMS:</h2>
|
94
|
+
<h3>0.9.2</h3>
|
95
|
+
<ul>
|
96
|
+
<li>Remove JSON dependency
|
97
|
+
|
98
|
+
</li>
|
99
|
+
<li>Add the "HTTP code" renderer, so you can now use something like
|
100
|
+
this : render 200 => "OK", :server => "<a
|
101
|
+
href="../classes/Capcode.html">Capcode</a>", …
|
102
|
+
|
103
|
+
</li>
|
104
|
+
<li>Reintroduce before_filter. <a
|
105
|
+
href="http://github.com/glejeune/Capcode/tree/master/examples/filter.rb">See
|
106
|
+
example filter.rb</a>.
|
107
|
+
|
108
|
+
</li>
|
109
|
+
</ul>
|
94
110
|
<h3>0.9.1</h3>
|
95
111
|
<ul>
|
96
112
|
<li>You don‘t need to require the renderers. This will be done by <a
|
@@ -109,12 +125,10 @@ href="../classes/Capcode.html">Capcode</a> at use time.
|
|
109
125
|
<li>THIS VERSION IS A MAJOR ENHANCEMENT : YOU MUST UNINSTALL ALL PREVIOUS
|
110
126
|
VERSIONS !!!
|
111
127
|
|
128
|
+
<pre>
|
129
|
+
gem uninstall Capode --version '< 0.9.0'
|
130
|
+
</pre>
|
112
131
|
</li>
|
113
|
-
</ul>
|
114
|
-
<p>
|
115
|
-
gem uninstall Capode —version ’< 0.9.0‘
|
116
|
-
</p>
|
117
|
-
<ul>
|
118
132
|
<li>Renderers and database accessors have been extracted and are now in the <a
|
119
133
|
href="http://github.com/glejeune/Capcode.more">plugins repository</a>. Each
|
120
134
|
plugin is a gem that‘s can be installed separately.
|
@@ -0,0 +1,101 @@
|
|
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>File: filters.rb</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="fileHeader">
|
50
|
+
<h1>filters.rb</h1>
|
51
|
+
<table class="header-table">
|
52
|
+
<tr class="top-aligned-row">
|
53
|
+
<td><strong>Path:</strong></td>
|
54
|
+
<td>lib/capcode/filters.rb
|
55
|
+
</td>
|
56
|
+
</tr>
|
57
|
+
<tr class="top-aligned-row">
|
58
|
+
<td><strong>Last Update:</strong></td>
|
59
|
+
<td>Thu Feb 04 16:06:55 +0100 2010</td>
|
60
|
+
</tr>
|
61
|
+
</table>
|
62
|
+
</div>
|
63
|
+
<!-- banner header -->
|
64
|
+
|
65
|
+
<div id="bodyContent">
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
<div id="contextContent">
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
</div>
|
74
|
+
|
75
|
+
|
76
|
+
</div>
|
77
|
+
|
78
|
+
|
79
|
+
<!-- if includes -->
|
80
|
+
|
81
|
+
<div id="section">
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
<!-- if method_list -->
|
91
|
+
|
92
|
+
|
93
|
+
</div>
|
94
|
+
|
95
|
+
|
96
|
+
<div id="validator-badges">
|
97
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
</body>
|
101
|
+
</html>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Thu Feb 04 15:36:48 +0100 2010</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -81,7 +81,6 @@ Please read the README.rdoc file !
|
|
81
81
|
<div class="name-list">
|
82
82
|
rubygems
|
83
83
|
rack
|
84
|
-
json
|
85
84
|
logger
|
86
85
|
optparse
|
87
86
|
irb
|
@@ -91,6 +90,7 @@ Please read the README.rdoc file !
|
|
91
90
|
capcode/helpers/auth
|
92
91
|
capcode/render/text
|
93
92
|
capcode/configuration
|
93
|
+
capcode/filters
|
94
94
|
mongrel
|
95
95
|
</div>
|
96
96
|
</div>
|
data/doc/rdoc/fr_file_index.html
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
<a href="files/lib/capcode_rb.html">lib/capcode.rb</a><br />
|
27
27
|
<a href="files/lib/capcode/base/db_rb.html">lib/capcode/base/db.rb</a><br />
|
28
28
|
<a href="files/lib/capcode/configuration_rb.html">lib/capcode/configuration.rb</a><br />
|
29
|
+
<a href="files/lib/capcode/filters_rb.html">lib/capcode/filters.rb</a><br />
|
29
30
|
<a href="files/lib/capcode/helpers/auth_rb.html">lib/capcode/helpers/auth.rb</a><br />
|
30
31
|
<a href="files/lib/capcode/render/text_rb.html">lib/capcode/render/text.rb</a><br />
|
31
32
|
</div>
|
@@ -21,28 +21,29 @@
|
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
22
22
|
<div id="index-entries">
|
23
23
|
<a href="classes/Capcode.html#M000001">Route (Capcode)</a><br />
|
24
|
-
<a href="classes/Capcode/Helpers.html#
|
24
|
+
<a href="classes/Capcode/Helpers.html#M000019">URL (Capcode::Helpers)</a><br />
|
25
25
|
<a href="classes/Capcode.html#M000010">application (Capcode)</a><br />
|
26
|
-
<a href="classes/Capcode/Helpers.html#
|
27
|
-
<a href="classes/Capcode/Helpers.html#
|
28
|
-
<a href="classes/Capcode
|
26
|
+
<a href="classes/Capcode/Helpers.html#M000014">args (Capcode::Helpers)</a><br />
|
27
|
+
<a href="classes/Capcode/Helpers.html#M000015">args= (Capcode::Helpers)</a><br />
|
28
|
+
<a href="classes/Capcode.html#M000013">before_filter (Capcode)</a><br />
|
29
|
+
<a href="classes/Capcode/Helpers.html#M000020">content_for (Capcode::Helpers)</a><br />
|
29
30
|
<a href="classes/Capcode.html#M000003">env (Capcode)</a><br />
|
30
|
-
<a href="classes/Capcode/Configuration.html#
|
31
|
+
<a href="classes/Capcode/Configuration.html#M000024">get (Capcode::Configuration)</a><br />
|
31
32
|
<a href="classes/Capcode.html#M000009">http_authentication (Capcode)</a><br />
|
32
|
-
<a href="classes/Capcode/Helpers/Authorization.html#
|
33
|
-
<a href="classes/Capcode/Helpers.html#
|
33
|
+
<a href="classes/Capcode/Helpers/Authorization.html#M000022">http_authentication (Capcode::Helpers::Authorization)</a><br />
|
34
|
+
<a href="classes/Capcode/Helpers.html#M000017">json (Capcode::Helpers)</a><br />
|
34
35
|
<a href="classes/Capcode.html#M000007">map (Capcode)</a><br />
|
35
|
-
<a href="classes/Capcode/Configuration.html#
|
36
|
+
<a href="classes/Capcode/Configuration.html#M000025">options (Capcode::Configuration)</a><br />
|
36
37
|
<a href="classes/Capcode.html#M000002">params (Capcode)</a><br />
|
37
|
-
<a href="classes/Capcode/Helpers.html#
|
38
|
-
<a href="classes/Capcode/Helpers.html#
|
38
|
+
<a href="classes/Capcode/Helpers.html#M000018">redirect (Capcode::Helpers)</a><br />
|
39
|
+
<a href="classes/Capcode/Helpers.html#M000016">render (Capcode::Helpers)</a><br />
|
39
40
|
<a href="classes/Capcode.html#M000005">request (Capcode)</a><br />
|
40
41
|
<a href="classes/Capcode.html#M000006">response (Capcode)</a><br />
|
41
42
|
<a href="classes/Capcode.html#M000011">run (Capcode)</a><br />
|
42
43
|
<a href="classes/Capcode.html#M000004">session (Capcode)</a><br />
|
43
|
-
<a href="classes/Capcode/Configuration.html#M000022">set (Capcode::Configuration)</a><br />
|
44
44
|
<a href="classes/Capcode.html#M000012">set (Capcode)</a><br />
|
45
|
-
<a href="classes/Capcode/
|
45
|
+
<a href="classes/Capcode/Configuration.html#M000023">set (Capcode::Configuration)</a><br />
|
46
|
+
<a href="classes/Capcode/Helpers.html#M000021">static (Capcode::Helpers)</a><br />
|
46
47
|
<a href="classes/Capcode.html#M000008">use (Capcode)</a><br />
|
47
48
|
</div>
|
48
49
|
</div>
|
data/examples/filter.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
$:.unshift( "../lib" )
|
2
|
+
require 'capcode'
|
3
|
+
|
4
|
+
module Capcode
|
5
|
+
before_filter :for_all, :except => [:SecretPage]
|
6
|
+
before_filter :only_one, :only => [:One]
|
7
|
+
before_filter :except_three, :except => [:Three, :SecretPage]
|
8
|
+
before_filter :you_will_never_see_this_page, :only => [:SecretPage]
|
9
|
+
|
10
|
+
def for_all
|
11
|
+
@was ||= ""
|
12
|
+
@was << "for_all "
|
13
|
+
|
14
|
+
return nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def only_one
|
18
|
+
@was ||= ""
|
19
|
+
@was << "only_one "
|
20
|
+
|
21
|
+
return nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def except_three
|
25
|
+
@was ||= ""
|
26
|
+
@was << "except_three "
|
27
|
+
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def you_will_never_see_this_page
|
32
|
+
redirect Capcode::Index
|
33
|
+
end
|
34
|
+
|
35
|
+
class Index < Route "/"
|
36
|
+
def get
|
37
|
+
render :markaby => :index
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class One < Route "/one"
|
42
|
+
def get
|
43
|
+
@value = Time.now
|
44
|
+
@wwas = @was
|
45
|
+
@was = ""
|
46
|
+
render :markaby => :count
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class Two < Route "/two"
|
51
|
+
def get
|
52
|
+
@value = Time.now
|
53
|
+
@wwas = @was
|
54
|
+
@was = ""
|
55
|
+
render :markaby => :count
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class Three < Route "/three"
|
60
|
+
def get
|
61
|
+
@value = Time.now
|
62
|
+
@wwas = @was
|
63
|
+
@was = ""
|
64
|
+
render :markaby => :count
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class SecretPage < Route "/secret"
|
69
|
+
def get
|
70
|
+
render :markaby => :secret
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
module Capcode::Views
|
76
|
+
def index
|
77
|
+
html do
|
78
|
+
body do
|
79
|
+
a "One", :href => URL(Capcode::One); br
|
80
|
+
a "Two", :href => URL(Capcode::Two); br
|
81
|
+
a "Three", :href => URL(Capcode::Three); br
|
82
|
+
a "SecretPage", :href => URL(Capcode::SecretPage); br
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def count
|
88
|
+
html do
|
89
|
+
body do
|
90
|
+
span "I was in : #{@wwas}"; br
|
91
|
+
span "It's #{@value}"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def secret
|
97
|
+
html do
|
98
|
+
body do
|
99
|
+
span "If you see this page, there is a "; b "bug !!!"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
Capcode.run()
|
data/lib/capcode.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'rack'
|
5
|
-
require 'json' ## DELETE THIS IN 1.0.0
|
6
5
|
require 'logger'
|
7
6
|
Logger.class_eval { alias :write :<< } unless Logger.instance_methods.include? "write"
|
8
7
|
require 'optparse'
|
@@ -13,6 +12,7 @@ require 'capcode/core_ext'
|
|
13
12
|
require 'capcode/helpers/auth'
|
14
13
|
require 'capcode/render/text'
|
15
14
|
require 'capcode/configuration'
|
15
|
+
require 'capcode/filters'
|
16
16
|
|
17
17
|
module Capcode
|
18
18
|
#@@__ROUTES = {}
|
@@ -25,7 +25,6 @@ module Capcode
|
|
25
25
|
# @@__FILTERS << opts
|
26
26
|
# end
|
27
27
|
|
28
|
-
|
29
28
|
class ParameterError < ArgumentError #:nodoc: all
|
30
29
|
end
|
31
30
|
|
@@ -68,6 +67,10 @@ module Capcode
|
|
68
67
|
# * :xml => :my_func : :my_func must be defined in Capcode::Views
|
69
68
|
# * :webdav => /path/to/root
|
70
69
|
#
|
70
|
+
# Or you can use a "HTTP code" renderer :
|
71
|
+
#
|
72
|
+
# render 200 => "Ok", :server => "Capcode #{Capcode::CAPCOD_VERION}", ...
|
73
|
+
#
|
71
74
|
# If you want to use a specific layout, you can specify it with option
|
72
75
|
# :layout
|
73
76
|
#
|
@@ -80,6 +83,7 @@ module Capcode
|
|
80
83
|
def render( hash )
|
81
84
|
if hash.class == Hash
|
82
85
|
render_type = nil
|
86
|
+
possible_code_renderer = nil
|
83
87
|
|
84
88
|
if render_type.nil?
|
85
89
|
hash.keys.each do |key|
|
@@ -98,26 +102,41 @@ module Capcode
|
|
98
102
|
end
|
99
103
|
render_type = key
|
100
104
|
end
|
105
|
+
|
106
|
+
if key.class == Fixnum
|
107
|
+
possible_code_renderer = key
|
108
|
+
end
|
101
109
|
end
|
102
110
|
|
103
|
-
if render_type.nil?
|
111
|
+
if render_type.nil? and possible_code_renderer.nil?
|
104
112
|
raise Capcode::RenderError, "Renderer type not specified!", caller
|
105
113
|
end
|
106
114
|
end
|
107
115
|
unless self.respond_to?("render_#{render_type.to_s}")
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
116
|
+
if possible_code_renderer.nil?
|
117
|
+
raise Capcode::RenderError, "#{render_type} renderer not present ! please require 'capcode/render/#{render_type}'", caller
|
118
|
+
else
|
119
|
+
code = possible_code_renderer
|
120
|
+
body = hash.delete(possible_code_renderer)
|
121
|
+
header = {}
|
122
|
+
hash.each do |k, v|
|
123
|
+
k = k.to_s.split(/_/).map{|e| e.capitalize}.join("-")
|
124
|
+
header[k] = v
|
125
|
+
end
|
126
|
+
[code, hash, body]
|
127
|
+
end
|
128
|
+
else
|
129
|
+
render_name = hash.delete(render_type)
|
130
|
+
content_type = hash.delete(:content_type)
|
131
|
+
unless content_type.nil?
|
132
|
+
@response['Content-Type'] = content_type
|
133
|
+
end
|
134
|
+
|
135
|
+
begin
|
136
|
+
self.send( "render_#{render_type.to_s}", render_name, hash )
|
137
|
+
rescue => e
|
138
|
+
raise Capcode::RenderError, "Error rendering `#{render_type.to_s}' : #{e.message}", caller
|
139
|
+
end
|
121
140
|
end
|
122
141
|
else
|
123
142
|
render( :text => hash )
|
@@ -137,8 +156,7 @@ module Capcode
|
|
137
156
|
# <b>DEPRECATED</b>, please use <tt>render( :json => o )</tt>
|
138
157
|
def json( d ) ## DELETE THIS IN 1.0.0
|
139
158
|
warn( "json is deprecated and will be removed in version 1.0, please use `render( :json => ... )'" )
|
140
|
-
|
141
|
-
d.to_json
|
159
|
+
render :json => d
|
142
160
|
end
|
143
161
|
|
144
162
|
# Send a redirect response
|
@@ -446,15 +464,21 @@ module Capcode
|
|
446
464
|
args << nil
|
447
465
|
end
|
448
466
|
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
467
|
+
filter_output = Capcode::Filter.execute( self )
|
468
|
+
|
469
|
+
if( filter_output.nil? )
|
470
|
+
case @env["REQUEST_METHOD"]
|
471
|
+
when "GET"
|
472
|
+
get( *args )
|
473
|
+
when "POST"
|
474
|
+
_method = params.delete( "_method" ) { |_| "post" }
|
475
|
+
send( _method.downcase.to_sym, *args )
|
476
|
+
else
|
477
|
+
_method = @env["REQUEST_METHOD"]
|
478
|
+
send( _method.downcase.to_sym, *args )
|
479
|
+
end
|
480
|
+
else
|
481
|
+
filter_output
|
458
482
|
end
|
459
483
|
}
|
460
484
|
if r.respond_to?(:to_ary)
|