rack-recaptcha 0.6.4 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/README.md +58 -15
- data/lib/rack/recaptcha/helpers.rb +3 -1
- data/rack-recaptcha.gemspec +2 -1
- data/test/helpers_test.rb +5 -2
- metadata +54 -13
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# rack-recaptcha [](http://stillmaintained.com/achiu/rack-recaptcha)
|
2
2
|
|
3
|
+
[](http://travis-ci.org/achiu/rack-recaptcha)
|
4
|
+
|
3
5
|
Drop this Rack middleware in your web application to enable CAPTCHA verification via Recaptcha API.
|
4
6
|
|
5
7
|
## How to Use
|
@@ -74,27 +76,60 @@ end
|
|
74
76
|
|
75
77
|
The `Rack::Recaptcha::Helpers` module (for Sinatra, Rails, Padrino) adds these methods to your app:
|
76
78
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
Return a javascript recaptcha form
|
80
|
+
```ruby
|
81
|
+
recaptcha_tag :challenge
|
82
|
+
```
|
83
|
+
|
84
|
+
Return a non-javascript recaptcha form
|
85
|
+
```ruby
|
86
|
+
recaptcha_tag :noscript
|
87
|
+
```
|
88
|
+
|
89
|
+
Return a ajax recaptcha form
|
90
|
+
```ruby
|
91
|
+
recaptcha_tag :ajax
|
92
|
+
```
|
93
|
+
|
94
|
+
For ajax recaptcha's, you can pass additional options like:
|
95
|
+
```ruby
|
96
|
+
recaptcha_tag :ajax, :display => { :theme => 'red'}
|
97
|
+
```
|
98
|
+
|
99
|
+
For non-ajax recaptcha's, you can pass additional options like:
|
100
|
+
```ruby
|
101
|
+
# Overrides the key set in Middleware
|
102
|
+
recaptcha_tag :challenge, :public_key => KEY
|
103
|
+
|
104
|
+
# Adjust Height and/or Width
|
105
|
+
recaptcha_tag :noscript, :height => 300, :width => 500
|
85
106
|
|
86
|
-
|
107
|
+
# Adjust the rows and/or columns
|
108
|
+
recaptcha_tag :challenge, :row => 3, :cols => 5
|
109
|
+
|
110
|
+
# Set the language
|
111
|
+
recaptcha_tag :noscript, :language => :en
|
112
|
+
```
|
113
|
+
|
114
|
+
To test whether or not the verification passed, you can use:
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
recaptcha_valid?
|
118
|
+
```
|
87
119
|
|
88
120
|
The `recaptcha_valid?` helper can also be overloaded during tests. You
|
89
|
-
can set its response to either true or false by doing the
|
121
|
+
can set its response to either true or false by doing the following:
|
90
122
|
|
91
|
-
|
123
|
+
```ruby
|
124
|
+
# Have recaptcha_valid? return true
|
125
|
+
Rack::Recaptcha.test_mode!
|
92
126
|
|
93
|
-
|
127
|
+
# Or have it return false
|
128
|
+
Rack::Recaptcha.test_mode! :return => false
|
129
|
+
```
|
94
130
|
|
95
|
-
Rack::Recaptcha.test_mode! :return => false
|
96
131
|
|
97
|
-
|
132
|
+
For additional options and resources checkout the [customization page](https://developers.google.com/recaptcha/docs/customization)
|
98
133
|
|
99
134
|
#### Example
|
100
135
|
|
@@ -149,6 +184,14 @@ Tobias Begalke - [elcamino](https://github.com/elcamino)
|
|
149
184
|
|
150
185
|
* Added HTTP Proxy support
|
151
186
|
|
187
|
+
Julik Tarkhanov - [julik](https://github.com/julik)
|
188
|
+
|
189
|
+
* Adding rack-recaptcha to travis-ci
|
190
|
+
|
191
|
+
Rob Worley - [robworley](https://github.com/robworley)
|
192
|
+
|
193
|
+
* Adding language setting for recaptcha form
|
194
|
+
|
152
195
|
#### Note on Patches/Pull Requests
|
153
196
|
|
154
197
|
* Fork the project.
|
@@ -161,4 +204,4 @@ Tobias Begalke - [elcamino](https://github.com/elcamino)
|
|
161
204
|
|
162
205
|
#### Copyright
|
163
206
|
|
164
|
-
Copyright (c) 2011 Arthur Chiu. See LICENSE for details.
|
207
|
+
Copyright (c) 2010, 2011, 2012 Arthur Chiu. See LICENSE for details.
|
@@ -29,13 +29,15 @@ module Rack
|
|
29
29
|
# :width - Adjust the width of the form
|
30
30
|
# :row - Adjust the rows for the challenge field
|
31
31
|
# :cols - Adjust the column for the challenge field
|
32
|
+
# :language - Set the language
|
32
33
|
def recaptcha_tag(type= :noscript, options={})
|
33
34
|
options = DEFAULT.merge(options)
|
34
35
|
options[:public_key] ||= Rack::Recaptcha.public_key
|
35
36
|
path = options[:ssl] ? Rack::Recaptcha::API_SECURE_URL : Rack::Recaptcha::API_URL
|
36
37
|
params = "k=#{options[:public_key]}"
|
38
|
+
params += "&hl=" + uri_parser.escape(options[:language].to_s) if options[:language]
|
37
39
|
error_message = request.env['recaptcha.msg'] if defined?(request)
|
38
|
-
params += "&error=" + uri_parser.escape(error_message) unless error_message.nil?
|
40
|
+
params += "&error=" + uri_parser.escape(error_message) unless error_message.nil?
|
39
41
|
html = case type.to_sym
|
40
42
|
when :challenge
|
41
43
|
%{<script type="text/javascript" src="#{path}/challenge?#{params}">
|
data/rack-recaptcha.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{rack-recaptcha}
|
3
|
-
s.version = "0.6.
|
3
|
+
s.version = "0.6.5"
|
4
4
|
s.required_rubygems_version = ">=1.3.6"
|
5
5
|
s.authors = ["Arthur Chiu"]
|
6
6
|
s.date = %q{2010-07-18}
|
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.summary = %q{Rack middleware for Recaptcha}
|
16
16
|
s.test_files = Dir.glob("test/**/*")
|
17
17
|
s.add_runtime_dependency "json", ">= 0"
|
18
|
+
s.add_development_dependency "rake", "~> 0.9.2"
|
18
19
|
s.add_development_dependency "riot", "~> 0.12.3"
|
19
20
|
s.add_development_dependency "rack-test", "~> 0.5.7"
|
20
21
|
s.add_development_dependency "fakeweb", "~> 1.3.0"
|
data/test/helpers_test.rb
CHANGED
@@ -46,6 +46,7 @@ context "Rack::Recaptcha::Helpers" do
|
|
46
46
|
asserts_topic('has display').matches %r{RecaptchaOptions}
|
47
47
|
asserts_topic('has theme').matches %r{"theme":"red"}
|
48
48
|
end
|
49
|
+
|
49
50
|
context "without display" do
|
50
51
|
setup do
|
51
52
|
mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
|
@@ -62,19 +63,20 @@ context "Rack::Recaptcha::Helpers" do
|
|
62
63
|
context "noscript" do
|
63
64
|
setup do
|
64
65
|
mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
|
65
|
-
helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world"
|
66
|
+
helper_test.recaptcha_tag :noscript, :public_key => "hello_world_world", :language => :en
|
66
67
|
end
|
67
68
|
|
68
69
|
asserts_topic("iframe").matches %r{iframe}
|
69
70
|
asserts_topic("no script tag").matches %r{<noscript>}
|
70
71
|
asserts_topic("public key").matches %r{hello_world_world}
|
72
|
+
asserts_topic("has language").matches %r{hl=en}
|
71
73
|
denies_topic("has js").matches %r{recaptcha_ajax.js}
|
72
74
|
end
|
73
75
|
|
74
76
|
context "challenge" do
|
75
77
|
setup do
|
76
78
|
mock(helper_test.request.env).[]('recaptcha.msg').returns(nil)
|
77
|
-
helper_test.recaptcha_tag(:challenge)
|
79
|
+
helper_test.recaptcha_tag(:challenge, :language => :en)
|
78
80
|
end
|
79
81
|
|
80
82
|
asserts_topic("has script tag").matches %r{script}
|
@@ -82,6 +84,7 @@ context "Rack::Recaptcha::Helpers" do
|
|
82
84
|
denies_topic("has js").matches %r{recaptcha_ajax.js}
|
83
85
|
denies_topic("has display").matches %r{RecaptchaOptions}
|
84
86
|
asserts_topic("has public_key").matches %r{#{'0'*40}}
|
87
|
+
asserts_topic("has language").matches %r{hl=en}
|
85
88
|
end
|
86
89
|
|
87
90
|
context "server" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-recaptcha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2010-07-18 00:00:00.
|
12
|
+
date: 2010-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,31 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.9.2
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.2
|
25
46
|
- !ruby/object:Gem::Dependency
|
26
47
|
name: riot
|
27
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
50
|
requirements:
|
30
51
|
- - ~>
|
@@ -32,10 +53,15 @@ dependencies:
|
|
32
53
|
version: 0.12.3
|
33
54
|
type: :development
|
34
55
|
prerelease: false
|
35
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.12.3
|
36
62
|
- !ruby/object:Gem::Dependency
|
37
63
|
name: rack-test
|
38
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
39
65
|
none: false
|
40
66
|
requirements:
|
41
67
|
- - ~>
|
@@ -43,10 +69,15 @@ dependencies:
|
|
43
69
|
version: 0.5.7
|
44
70
|
type: :development
|
45
71
|
prerelease: false
|
46
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.5.7
|
47
78
|
- !ruby/object:Gem::Dependency
|
48
79
|
name: fakeweb
|
49
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
50
81
|
none: false
|
51
82
|
requirements:
|
52
83
|
- - ~>
|
@@ -54,10 +85,15 @@ dependencies:
|
|
54
85
|
version: 1.3.0
|
55
86
|
type: :development
|
56
87
|
prerelease: false
|
57
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.3.0
|
58
94
|
- !ruby/object:Gem::Dependency
|
59
95
|
name: rr
|
60
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
61
97
|
none: false
|
62
98
|
requirements:
|
63
99
|
- - ~>
|
@@ -65,7 +101,12 @@ dependencies:
|
|
65
101
|
version: 1.0.2
|
66
102
|
type: :development
|
67
103
|
prerelease: false
|
68
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.2
|
69
110
|
description: Rack middleware Captcha verification using Recaptcha API.
|
70
111
|
email: mr.arthur.chiu@gmail.com
|
71
112
|
executables: []
|
@@ -106,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
147
|
version: 1.3.6
|
107
148
|
requirements: []
|
108
149
|
rubyforge_project:
|
109
|
-
rubygems_version: 1.8.
|
150
|
+
rubygems_version: 1.8.21
|
110
151
|
signing_key:
|
111
152
|
specification_version: 3
|
112
153
|
summary: Rack middleware for Recaptcha
|