rack-conditional-forms 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +20 -1
- data/lib/rack/conditional-forms.rb +1 -1
- data/lib/rack/conditional-forms/version.rb +1 -1
- data/spec/conditional-forms-spec.rb +3 -3
- metadata +1 -1
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Rack::Conditional::Forms
|
2
2
|
|
3
|
-
Rack::ConditionalForms allows forms to override `If-Match` and `If-Unmodified-Since` headers
|
3
|
+
Rack::ConditionalForms allows forms to override `If-Match` and `If-Unmodified-Since` headers, using `_if_match` and `_if_unmodified_since` keys, respectively,
|
4
4
|
allowing conditional `POST`, `PUT` and `DELETE` requests from the browser.
|
5
5
|
|
6
6
|
## Installation
|
@@ -25,6 +25,25 @@ Or install it yourself as:
|
|
25
25
|
To use Rack::SslEnforcer in your Rails application, add the following line to your application config file (config/application.rb for Rails 3, config/environment.rb for Rails 2):
|
26
26
|
|
27
27
|
config.middleware.use Rack::ConditionalForms
|
28
|
+
|
29
|
+
Prepend the hidden fields to your form:
|
30
|
+
|
31
|
+
<form action="/123" method="POST">
|
32
|
+
<fieldset>
|
33
|
+
<input name="_method" type="hidden" value="PUT" />
|
34
|
+
<input name="_if_match" type="hidden" value='"202cb962ac59075b964b07152d234b70"' />
|
35
|
+
<input name="_if_unmodified_since" type="hidden" value="Tue, 08 May 2012 00:00:00 GMT" />
|
36
|
+
<p>
|
37
|
+
<label for="title"></label>
|
38
|
+
<input name="title" value="Example form" />
|
39
|
+
</p>
|
40
|
+
<p>
|
41
|
+
<input type="submit" />
|
42
|
+
</p>
|
43
|
+
</fieldset>
|
44
|
+
</form>
|
45
|
+
|
46
|
+
The request's `HTTP_IF_MATCH` and `HTTP_IF_UNMODIFIED_SINCE` headers will then be set to `"202cb962ac59075b964b07152d234b70"` and `Tue, 08 May 2012 00:00:00 GMT`, respectively.
|
28
47
|
|
29
48
|
## Contributing
|
30
49
|
|
@@ -14,7 +14,7 @@ module Rack
|
|
14
14
|
def call(env)
|
15
15
|
if (match = if_match(env)) && !match.empty?
|
16
16
|
env['rack.conditionalforms.original_match'] = env['HTTP_IF_MATCH']
|
17
|
-
env['HTTP_IF_MATCH'] = if_match(env)
|
17
|
+
env['HTTP_IF_MATCH'] = '"%s"' % if_match(env)
|
18
18
|
end
|
19
19
|
|
20
20
|
if (unmodified_since = if_unmodified_since(env)) && !unmodified_since.empty?
|
@@ -10,7 +10,7 @@ describe Rack::ConditionalForms do
|
|
10
10
|
|
11
11
|
it 'must override If-Match on POST' do
|
12
12
|
post '/', _if_match: '123'
|
13
|
-
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '123'
|
13
|
+
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '"123"'
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'wont override If-Match on POST if not present' do
|
@@ -20,7 +20,7 @@ describe Rack::ConditionalForms do
|
|
20
20
|
|
21
21
|
it 'must override If-Match on PUT' do
|
22
22
|
put '/', _if_match: '123'
|
23
|
-
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '123'
|
23
|
+
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '"123"'
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'wont override If-Match on PUT if not present' do
|
@@ -30,7 +30,7 @@ describe Rack::ConditionalForms do
|
|
30
30
|
|
31
31
|
it 'must override If-Match on DELETE' do
|
32
32
|
delete '/', _if_match: '123'
|
33
|
-
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '123'
|
33
|
+
JSON.parse(last_response.body)['HTTP_IF_MATCH'].must_equal '"123"'
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'wont override If-Match on DELETE if not present' do
|