antage-merb-recaptcha 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,45 @@
1
+ = merb-recaptcha
2
+
3
+ == About
4
+
5
+ Merb-recaptcha is plugin for Merb web-framework. It provides view and controller helpers for Recaptcha service.
6
+
7
+ == Installation
8
+
9
+ Install gem from github.com:
10
+ gem install antage-merb-recaptcha --source=http://gems.github.com
11
+
12
+ Add following line in <tt>config/dependencies.rb</tt> of your web application:
13
+ dependency "antage-merb-recaptcha", "~> 1.0.0", :require_as => "merb-recaptcha"
14
+
15
+ Sign up at Recaptcha and get public and private keys. Add keys in <tt>config/init.rb</tt>:
16
+ Merb::BootLoader.after_app_loads do
17
+ Merb::Plugins.config[:merb_recaptcha][:public_key] = "... here your public key ..."
18
+ Merb::Plugins.config[:merb_recaptcha][:private_key] = "... here your private key ..."
19
+ end
20
+
21
+ == Usage
22
+
23
+ Just add helper in your form:
24
+ <%= form_for @users, :action => resource(:users), :method => :post do %>
25
+ .....
26
+ <%= recaptcha_tags %>
27
+ <%= submit "Send" %>
28
+ <% end %>
29
+
30
+ And then check captcha in controller:
31
+ class Users < Application
32
+ ......
33
+ def create(user)
34
+ @user = User.new(user)
35
+ if (captcha_correct = recaptcha_valid?) && @user.save
36
+ redirect resource(@user)
37
+ else
38
+ unless captcha_correct
39
+ @user.valid?
40
+ @user.errors.add(:general, "Captcha code is incorrect")
41
+ end
42
+ render :new
43
+ end
44
+ ......
45
+ end
data/Rakefile CHANGED
@@ -1,14 +1,18 @@
1
1
  require 'rubygems'
2
2
  require 'rake/gempackagetask'
3
+ require 'rake/rdoctask'
3
4
  require 'rake/clean'
4
5
 
6
+ require 'yard'
7
+ require 'yard/rake/yardoc_task'
8
+
5
9
  require 'spec/rake/spectask'
6
10
 
7
11
  require 'merb-core'
8
12
  require 'merb-core/tasks/merb'
9
13
 
10
14
  GEM_NAME = "merb-recaptcha"
11
- GEM_VERSION = "1.0.0"
15
+ GEM_VERSION = "1.0.1"
12
16
  AUTHOR = "Anton Ageev"
13
17
  EMAIL = "antage@gmail.com"
14
18
  HOMEPAGE = "http://github.com/antage/merb-recaptcha/"
@@ -20,19 +24,21 @@ spec = Gem::Specification.new do |s|
20
24
  s.version = GEM_VERSION
21
25
  s.platform = Gem::Platform::RUBY
22
26
  s.has_rdoc = true
23
- s.extra_rdoc_files = ["README.textile", "LICENSE", 'TODO']
27
+ s.extra_rdoc_files = [ "README.rdoc", "LICENSE" ]
28
+ s.rdoc_options << "--main" << "README.rdoc"
24
29
  s.summary = SUMMARY
25
30
  s.description = s.summary
26
31
  s.author = AUTHOR
27
32
  s.email = EMAIL
28
33
  s.homepage = HOMEPAGE
29
34
  s.require_path = 'lib'
30
- s.files = %w(LICENSE README.textile Rakefile TODO merb-recaptcha.gemspec) + Dir["lib/**/*"].select { |f| File.file?(f) }
35
+ s.files = %w(LICENSE README.rdoc Rakefile TODO merb-recaptcha.gemspec) + Dir["lib/**/*"].select { |f| File.file?(f) }
31
36
  s.test_files = %w(spec/spec_helper.rb) + Dir["spec/*_spec.rb"] + Dir["spec/fixture/app/**/*"].select { |f| File.file?(f) }
32
37
 
33
38
  s.add_runtime_dependency "merb-core", ">= 1.0.0"
34
39
  s.add_runtime_dependency "builder", "~> 2.0"
35
40
  s.add_development_dependency "rspec", ">= 1.1.0"
41
+ s.add_development_dependency "mocha", ">= 0.9.3"
36
42
  end
37
43
 
38
44
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -56,6 +62,15 @@ task :gemspec do
56
62
  end
57
63
  end
58
64
 
65
+ Rake::RDocTask.new do |rdoc|
66
+ files = ["README.rdoc", "LICENSE", "lib/**/*.rb"]
67
+ rdoc.rdoc_files.add(files)
68
+ rdoc.main = "README.rdoc"
69
+ rdoc.title = "merb-recaptcha docs"
70
+ rdoc.rdoc_dir = "doc"
71
+ rdoc.options << "--line-numbers" << "--inline-source"
72
+ end
73
+
59
74
  Spec::Rake::SpecTask.new(:spec) do |t|
60
75
  t.spec_opts << '--format' << 'specdoc' << '--colour'
61
76
  t.spec_opts << '--loadby' << 'random'
@@ -9,13 +9,14 @@ if defined?(Merb::Plugins)
9
9
 
10
10
  Merb::BootLoader.before_app_loads do
11
11
  # require code that must be loaded before the application
12
+ require 'merb-recaptcha/constants.rb'
12
13
  require 'merb-recaptcha/view_helpers.rb'
13
14
  require 'merb-recaptcha/exceptions.rb'
14
15
  require 'merb-recaptcha/controller_mixin.rb'
15
- module Merb::GlobalHelpers
16
+ module Merb::GlobalHelpers # :nodoc:
16
17
  include Merb::Helpers::Recaptcha
17
18
  end
18
- class Merb::Controller
19
+ class Merb::Controller # :nodoc:
19
20
  include Merb::RecaptchaMixin
20
21
  end
21
22
  end
@@ -0,0 +1,7 @@
1
+ module Merb
2
+ module Recaptcha
3
+ API_SERVER = "http://api.recaptcha.net"
4
+ API_SECURE_SERVER = "https://api-secure.recaptcha.net"
5
+ API_VERIFY_SERVER = "http://api-verify.recaptcha.net"
6
+ end
7
+ end
@@ -1,9 +1,15 @@
1
1
  require 'net/http'
2
2
 
3
- module Merb
3
+ module Merb # :nodoc:
4
4
  module RecaptchaMixin
5
+
6
+ # This method checks challenge and response data via Recaptcha API server.
7
+ # * It will return true, if filled captcha response is correct.
8
+ # * It will return false, if captcha is incorrect.
9
+ # * It will raise exception, if Recaptcha API server returns error.
10
+ #
5
11
  def recaptcha_valid?
6
- response = Net::HTTP.post_form(URI.parse("http://api-verify.recaptcha.net/verify"), {
12
+ response = Net::HTTP.post_form(URI.parse("#{Merb::Recaptcha::API_VERIFY_SERVER}/verify"), {
7
13
  :privatekey => Merb::Plugins.config[:merb_recaptcha][:private_key],
8
14
  :remoteip => request.remote_ip,
9
15
  :challenge => params[:recaptcha_challenge_field],
@@ -1,10 +1,30 @@
1
- module Merb
1
+ module Merb # :nodoc:
2
2
  module Recaptcha
3
3
  class GenericError < RuntimeError; end
4
+
5
+ # We weren't able to verify the public key.
6
+ # Possible solutions:
7
+ #
8
+ # * Did you swap the public and private key? It is important to use the correct one
9
+ # * Did you make sure to copy the entire key, with all hyphens and underscores, but without any spaces? The key should be exactly 40 letters long.
10
+ #
4
11
  class InvalidSitePublicKey < GenericError; end
12
+
13
+ # We weren't able to verify the private key.
14
+ # Possible solutions:
15
+ #
16
+ # * Did you swap the public and private key? It is important to use the correct one
17
+ # * Did you make sure to copy the entire key, with all hyphens and underscores, but without any spaces? The key should be exactly 40 letters long.
18
+ #
5
19
  class InvalidSitePrivateKey < GenericError; end
20
+
21
+ # The challenge parameter of the verify script was incorrect.
6
22
  class InvalidRequestCookie < GenericError; end
23
+
24
+ # The parameters to /verify were incorrect, make sure you are passing all the required parameters.
7
25
  class VerifyParamsIncorrect < GenericError; end
26
+
27
+ # reCAPTCHA API keys are tied to a specific domain name for security reasons.
8
28
  class InvalidReferrer < GenericError; end
9
29
  end
10
30
  end
@@ -1,11 +1,52 @@
1
1
  require 'builder'
2
2
 
3
- module Merb
4
- module Helpers
3
+ module Merb # :nodoc:
4
+ module Helpers # :nodoc:
5
5
  module Recaptcha
6
- API_SERVER = "http://api.recaptcha.net"
7
- API_SECURE_SERVER = "https://api-secure.recaptcha.net"
8
6
 
7
+ # Display recaptcha widget in various ways.
8
+ #
9
+ # * Display in-place:
10
+ # <%= recaptcha_tags :ajax => false, :noscript => false %>
11
+ #
12
+ # * Display in-place with <noscript></noscript> block:
13
+ # <%= recaptcha_tags :ajax => false, :noscript => true, :iframe_height => 100, :iframe_width => 100 %>
14
+ #
15
+ # * Dynamically create Recaptcha widget:
16
+ # <%= recaptcha_tags :ajax => true, :element_id => "recaptcha_place" %>
17
+ # <div id="recaptcha_place"></div>
18
+ # The above code bind javascript code on onload event:
19
+ # <script type="text/javascript">
20
+ # ....
21
+ # window.onload = function() { Recaptcha.create(....); }
22
+ # ....
23
+ # </script>
24
+ # If you use jQuery, you could use special value for :ajax parameter:
25
+ # <%= recaptcha_tags :ajax => :jquery %>
26
+ # <div id="recpatcha"></div>
27
+ # This code generates following:
28
+ # <script type="text/javascript">
29
+ # ....
30
+ # $(document).ready(function() { Recaptcha.create(....); });
31
+ # ....
32
+ # </script>
33
+ # You can specified callback function that will be invoked after widget has been created:
34
+ # <%= recaptcha_tags :ajax => true, :callback => "Recaptcha.focus_response_field" %>
35
+ # <div id="recaptcha"></div>
36
+ # This code will set focus on response field of created widget.
37
+ #
38
+ # For both displaying ways, you can customize widget:
39
+ # <%= recaptcha_tags :theme => "clean", :tabindex => 2 %>
40
+ # More detailed description of customizing options is at http://recaptcha.net/apidocs/captcha/client.html
41
+ #
42
+ # Default values of options:
43
+ # * :ajax => false
44
+ # * :element_id => "recaptcha"
45
+ # * :callback => nil
46
+ # * :noscript => false
47
+ # * :iframe_height => 300
48
+ # * :iframe_width => 500
49
+ #
9
50
  def recaptcha_tags(options = {})
10
51
  public_key = Merb::Plugins.config[:merb_recaptcha][:public_key]
11
52
 
@@ -17,9 +58,9 @@ module Merb
17
58
  iframe_width = options.delete(:iframe_width) || 500 # integer, only if noscript == true
18
59
 
19
60
  api_url = if request.ssl?
20
- API_SECURE_SERVER
61
+ Merb::Recaptcha::API_SECURE_SERVER
21
62
  else
22
- API_SERVER
63
+ Merb::Recaptcha::API_SERVER
23
64
  end
24
65
 
25
66
  result = ""
@@ -1,38 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = %q{merb-recaptcha}
3
- s.version = "1.0.0"
5
+ s.version = "1.0.1"
4
6
 
5
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
8
  s.authors = ["Anton Ageev"]
7
- s.date = %q{2008-12-10}
9
+ s.date = %q{2008-12-12}
8
10
  s.description = %q{Merb plugin that provides helpers for recaptcha.net service}
9
11
  s.email = %q{antage@gmail.com}
10
- s.extra_rdoc_files = ["README.textile", "LICENSE", "TODO"]
11
- s.files = ["LICENSE", "README.textile", "Rakefile", "TODO", "merb-recaptcha.gemspec", "lib/merb-recaptcha.rb", "lib/merb-recaptcha/exceptions.rb", "lib/merb-recaptcha/view_helpers.rb", "lib/merb-recaptcha/controller_mixin.rb", "lib/merb-recaptcha/merbtasks.rb", "spec/spec_helper.rb", "spec/recaptcha_ajax_with_callback_spec.rb", "spec/recaptcha_noajax_with_noscript_spec.rb", "spec/recaptcha_noajax_with_options_spec.rb", "spec/recaptcha_ajax_spec.rb", "spec/recaptcha_ajax_with_jquery_spec.rb", "spec/recaptcha_ajax_with_options_spec.rb", "spec/recaptcha_noajax_without_noscript_spec.rb", "spec/recaptcha_valid_spec.rb", "spec/fixture/app/views/layout/application.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_options.html.erb", "spec/fixture/app/views/exceptions/not_acceptable.html.erb", "spec/fixture/app/views/exceptions/not_found.html.erb", "spec/fixture/app/controllers/exceptions.rb", "spec/fixture/app/controllers/application.rb", "spec/fixture/app/controllers/recaptcha.rb", "spec/fixture/app/helpers/recaptcha_helpers.rb", "spec/fixture/app/helpers/global_helpers.rb"]
12
+ s.extra_rdoc_files = ["README.rdoc", "LICENSE"]
13
+ s.files = ["LICENSE", "README.rdoc", "Rakefile", "TODO", "merb-recaptcha.gemspec", "lib/merb-recaptcha/constants.rb", "lib/merb-recaptcha/merbtasks.rb", "lib/merb-recaptcha/controller_mixin.rb", "lib/merb-recaptcha/view_helpers.rb", "lib/merb-recaptcha/exceptions.rb", "lib/merb-recaptcha.rb", "spec/spec_helper.rb", "spec/recaptcha_noajax_without_noscript_spec.rb", "spec/recaptcha_noajax_with_noscript_spec.rb", "spec/recaptcha_valid_spec.rb", "spec/recaptcha_ajax_spec.rb", "spec/recaptcha_ajax_with_callback_spec.rb", "spec/recaptcha_ajax_with_options_spec.rb", "spec/recaptcha_noajax_with_options_spec.rb", "spec/recaptcha_ajax_with_jquery_spec.rb", "spec/fixture/app/controllers/application.rb", "spec/fixture/app/controllers/exceptions.rb", "spec/fixture/app/controllers/recaptcha.rb", "spec/fixture/app/views/exceptions/not_acceptable.html.erb", "spec/fixture/app/views/exceptions/not_found.html.erb", "spec/fixture/app/views/layout/application.html.erb", "spec/fixture/app/views/recaptcha/ajax.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb", "spec/fixture/app/helpers/global_helpers.rb", "spec/fixture/app/helpers/recaptcha_helpers.rb"]
12
14
  s.has_rdoc = true
13
15
  s.homepage = %q{http://github.com/antage/merb-recaptcha/}
16
+ s.rdoc_options = ["--main", "README.rdoc"]
14
17
  s.require_paths = ["lib"]
15
18
  s.rubyforge_project = %q{merb-recaptcha}
16
- s.rubygems_version = %q{1.2.0}
19
+ s.rubygems_version = %q{1.3.1}
17
20
  s.summary = %q{Merb plugin that provides helpers for recaptcha.net service}
18
- s.test_files = ["spec/spec_helper.rb", "spec/recaptcha_ajax_with_callback_spec.rb", "spec/recaptcha_noajax_with_noscript_spec.rb", "spec/recaptcha_noajax_with_options_spec.rb", "spec/recaptcha_ajax_spec.rb", "spec/recaptcha_ajax_with_jquery_spec.rb", "spec/recaptcha_ajax_with_options_spec.rb", "spec/recaptcha_noajax_without_noscript_spec.rb", "spec/recaptcha_valid_spec.rb", "spec/fixture/app/views/layout/application.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_options.html.erb", "spec/fixture/app/views/exceptions/not_acceptable.html.erb", "spec/fixture/app/views/exceptions/not_found.html.erb", "spec/fixture/app/controllers/exceptions.rb", "spec/fixture/app/controllers/application.rb", "spec/fixture/app/controllers/recaptcha.rb", "spec/fixture/app/helpers/recaptcha_helpers.rb", "spec/fixture/app/helpers/global_helpers.rb"]
21
+ s.test_files = ["spec/spec_helper.rb", "spec/recaptcha_noajax_without_noscript_spec.rb", "spec/recaptcha_noajax_with_noscript_spec.rb", "spec/recaptcha_valid_spec.rb", "spec/recaptcha_ajax_spec.rb", "spec/recaptcha_ajax_with_callback_spec.rb", "spec/recaptcha_ajax_with_options_spec.rb", "spec/recaptcha_noajax_with_options_spec.rb", "spec/recaptcha_ajax_with_jquery_spec.rb", "spec/fixture/app/controllers/application.rb", "spec/fixture/app/controllers/exceptions.rb", "spec/fixture/app/controllers/recaptcha.rb", "spec/fixture/app/views/exceptions/not_acceptable.html.erb", "spec/fixture/app/views/exceptions/not_found.html.erb", "spec/fixture/app/views/layout/application.html.erb", "spec/fixture/app/views/recaptcha/ajax.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_options.html.erb", "spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb", "spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb", "spec/fixture/app/helpers/global_helpers.rb", "spec/fixture/app/helpers/recaptcha_helpers.rb"]
19
22
 
20
23
  if s.respond_to? :specification_version then
21
24
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
22
25
  s.specification_version = 2
23
26
 
24
- if current_version >= 3 then
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
25
28
  s.add_runtime_dependency(%q<merb-core>, [">= 1.0.0"])
26
29
  s.add_runtime_dependency(%q<builder>, ["~> 2.0"])
27
30
  s.add_development_dependency(%q<rspec>, [">= 1.1.0"])
31
+ s.add_development_dependency(%q<mocha>, [">= 0.9.3"])
28
32
  else
29
33
  s.add_dependency(%q<merb-core>, [">= 1.0.0"])
30
34
  s.add_dependency(%q<builder>, ["~> 2.0"])
31
35
  s.add_dependency(%q<rspec>, [">= 1.1.0"])
36
+ s.add_dependency(%q<mocha>, [">= 0.9.3"])
32
37
  end
33
38
  else
34
39
  s.add_dependency(%q<merb-core>, [">= 1.0.0"])
35
40
  s.add_dependency(%q<builder>, ["~> 2.0"])
36
41
  s.add_dependency(%q<rspec>, [">= 1.1.0"])
42
+ s.add_dependency(%q<mocha>, [">= 0.9.3"])
37
43
  end
38
44
  end
@@ -7,12 +7,28 @@ class FakeController < Merb::Controller
7
7
  end
8
8
 
9
9
  describe "FakeController#check_recaptcha" do
10
- def do_request
11
- @response = dispatch_to(FakeController, "check_recaptcha", { :recaptcha_challenge_field => "blabla", :recaptcha_response_field => "blabla" })
10
+ def do_request(ssl = false)
11
+ @response = dispatch_to(FakeController, :check_recaptcha, { :recaptcha_challenge_field => "blabla", :recaptcha_response_field => "blabla" }, { "HTTPS" => ssl ? "on" : "off" })
12
12
  end
13
13
 
14
14
  def stub_response(body)
15
- Net::HTTP.stub!(:post_form).and_return mock("Net::HTTPResponse", :body => body)
15
+ Net::HTTP.stubs(:post_form).returns stub("Net::HTTPResponse", :body => body)
16
+ end
17
+
18
+ describe "with non-SSL request" do
19
+ it "should use non-ssl API server" do
20
+ cond = proc { |*args| args.first.is_a?(URI::HTTP) && args.first.scheme == "http" && args.first.host == "api-verify.recaptcha.net" }
21
+ Net::HTTP.expects(:post_form).with(&cond).returns(stub("Net::HTTPResponse", :body => "true"))
22
+ do_request(false)
23
+ end
24
+ end
25
+
26
+ describe "with SSL request" do
27
+ it "should use non-ssl API server" do
28
+ cond = proc { |*args| args.first.is_a?(URI::HTTP) && args.first.scheme == "http" && args.first.host == "api-verify.recaptcha.net" }
29
+ Net::HTTP.expects(:post_form).with(&cond).returns(stub("Net::HTTPResponse", :body => "true"))
30
+ do_request(true)
31
+ end
16
32
  end
17
33
 
18
34
  describe "with correct response" do
data/spec/spec_helper.rb CHANGED
@@ -26,6 +26,8 @@ Spec::Runner.configure do |config|
26
26
  config.include Merb::Test::ViewHelper
27
27
  config.include Merb::Test::RouteHelper
28
28
  config.include Merb::Test::ControllerHelper
29
+
30
+ config.mock_with :mocha
29
31
  end
30
32
 
31
33
  describe "ajax recaptcha", :shared => true do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: antage-merb-recaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Ageev
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-10 00:00:00 -08:00
12
+ date: 2008-12-12 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -39,6 +39,15 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.1.0
41
41
  version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: mocha
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.9.3
50
+ version:
42
51
  description: Merb plugin that provides helpers for recaptcha.net service
43
52
  email: antage@gmail.com
44
53
  executables: []
@@ -46,49 +55,50 @@ executables: []
46
55
  extensions: []
47
56
 
48
57
  extra_rdoc_files:
49
- - README.textile
58
+ - README.rdoc
50
59
  - LICENSE
51
- - TODO
52
60
  files:
53
61
  - LICENSE
54
- - README.textile
62
+ - README.rdoc
55
63
  - Rakefile
56
64
  - TODO
57
65
  - merb-recaptcha.gemspec
58
- - lib/merb-recaptcha.rb
59
- - lib/merb-recaptcha/exceptions.rb
60
- - lib/merb-recaptcha/view_helpers.rb
61
- - lib/merb-recaptcha/controller_mixin.rb
66
+ - lib/merb-recaptcha/constants.rb
62
67
  - lib/merb-recaptcha/merbtasks.rb
68
+ - lib/merb-recaptcha/controller_mixin.rb
69
+ - lib/merb-recaptcha/view_helpers.rb
70
+ - lib/merb-recaptcha/exceptions.rb
71
+ - lib/merb-recaptcha.rb
63
72
  - spec/spec_helper.rb
64
- - spec/recaptcha_ajax_with_callback_spec.rb
73
+ - spec/recaptcha_noajax_without_noscript_spec.rb
65
74
  - spec/recaptcha_noajax_with_noscript_spec.rb
66
- - spec/recaptcha_noajax_with_options_spec.rb
75
+ - spec/recaptcha_valid_spec.rb
67
76
  - spec/recaptcha_ajax_spec.rb
68
- - spec/recaptcha_ajax_with_jquery_spec.rb
77
+ - spec/recaptcha_ajax_with_callback_spec.rb
69
78
  - spec/recaptcha_ajax_with_options_spec.rb
70
- - spec/recaptcha_noajax_without_noscript_spec.rb
71
- - spec/recaptcha_valid_spec.rb
79
+ - spec/recaptcha_noajax_with_options_spec.rb
80
+ - spec/recaptcha_ajax_with_jquery_spec.rb
81
+ - spec/fixture/app/controllers/application.rb
82
+ - spec/fixture/app/controllers/exceptions.rb
83
+ - spec/fixture/app/controllers/recaptcha.rb
84
+ - spec/fixture/app/views/exceptions/not_acceptable.html.erb
85
+ - spec/fixture/app/views/exceptions/not_found.html.erb
72
86
  - spec/fixture/app/views/layout/application.html.erb
87
+ - spec/fixture/app/views/recaptcha/ajax.html.erb
73
88
  - spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb
89
+ - spec/fixture/app/views/recaptcha/ajax_with_options.html.erb
90
+ - spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb
91
+ - spec/fixture/app/views/recaptcha/noajax_with_options.html.erb
74
92
  - spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb
75
- - spec/fixture/app/views/recaptcha/ajax.html.erb
76
93
  - spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb
77
- - spec/fixture/app/views/recaptcha/noajax_with_options.html.erb
78
- - spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb
79
- - spec/fixture/app/views/recaptcha/ajax_with_options.html.erb
80
- - spec/fixture/app/views/exceptions/not_acceptable.html.erb
81
- - spec/fixture/app/views/exceptions/not_found.html.erb
82
- - spec/fixture/app/controllers/exceptions.rb
83
- - spec/fixture/app/controllers/application.rb
84
- - spec/fixture/app/controllers/recaptcha.rb
85
- - spec/fixture/app/helpers/recaptcha_helpers.rb
86
94
  - spec/fixture/app/helpers/global_helpers.rb
95
+ - spec/fixture/app/helpers/recaptcha_helpers.rb
87
96
  has_rdoc: true
88
97
  homepage: http://github.com/antage/merb-recaptcha/
89
98
  post_install_message:
90
- rdoc_options: []
91
-
99
+ rdoc_options:
100
+ - --main
101
+ - README.rdoc
92
102
  require_paths:
93
103
  - lib
94
104
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -112,26 +122,26 @@ specification_version: 2
112
122
  summary: Merb plugin that provides helpers for recaptcha.net service
113
123
  test_files:
114
124
  - spec/spec_helper.rb
115
- - spec/recaptcha_ajax_with_callback_spec.rb
125
+ - spec/recaptcha_noajax_without_noscript_spec.rb
116
126
  - spec/recaptcha_noajax_with_noscript_spec.rb
117
- - spec/recaptcha_noajax_with_options_spec.rb
127
+ - spec/recaptcha_valid_spec.rb
118
128
  - spec/recaptcha_ajax_spec.rb
119
- - spec/recaptcha_ajax_with_jquery_spec.rb
129
+ - spec/recaptcha_ajax_with_callback_spec.rb
120
130
  - spec/recaptcha_ajax_with_options_spec.rb
121
- - spec/recaptcha_noajax_without_noscript_spec.rb
122
- - spec/recaptcha_valid_spec.rb
131
+ - spec/recaptcha_noajax_with_options_spec.rb
132
+ - spec/recaptcha_ajax_with_jquery_spec.rb
133
+ - spec/fixture/app/controllers/application.rb
134
+ - spec/fixture/app/controllers/exceptions.rb
135
+ - spec/fixture/app/controllers/recaptcha.rb
136
+ - spec/fixture/app/views/exceptions/not_acceptable.html.erb
137
+ - spec/fixture/app/views/exceptions/not_found.html.erb
123
138
  - spec/fixture/app/views/layout/application.html.erb
139
+ - spec/fixture/app/views/recaptcha/ajax.html.erb
124
140
  - spec/fixture/app/views/recaptcha/ajax_with_callback.html.erb
141
+ - spec/fixture/app/views/recaptcha/ajax_with_options.html.erb
142
+ - spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb
143
+ - spec/fixture/app/views/recaptcha/noajax_with_options.html.erb
125
144
  - spec/fixture/app/views/recaptcha/noajax_with_noscript.html.erb
126
- - spec/fixture/app/views/recaptcha/ajax.html.erb
127
145
  - spec/fixture/app/views/recaptcha/ajax_with_jquery.html.erb
128
- - spec/fixture/app/views/recaptcha/noajax_with_options.html.erb
129
- - spec/fixture/app/views/recaptcha/noajax_without_noscript.html.erb
130
- - spec/fixture/app/views/recaptcha/ajax_with_options.html.erb
131
- - spec/fixture/app/views/exceptions/not_acceptable.html.erb
132
- - spec/fixture/app/views/exceptions/not_found.html.erb
133
- - spec/fixture/app/controllers/exceptions.rb
134
- - spec/fixture/app/controllers/application.rb
135
- - spec/fixture/app/controllers/recaptcha.rb
136
- - spec/fixture/app/helpers/recaptcha_helpers.rb
137
146
  - spec/fixture/app/helpers/global_helpers.rb
147
+ - spec/fixture/app/helpers/recaptcha_helpers.rb
data/README.textile DELETED
@@ -1,45 +0,0 @@
1
- h1. merb-recaptcha
2
-
3
- h2. About
4
-
5
- Merb-recaptcha is plugin for "Merb":http://github.com/wycats/merb web-framework. It provides view and controller helpers for "Recaptcha":http://recaptcha.net service.
6
-
7
- h2. Installation
8
-
9
- Install gem from github.com:
10
- <pre><code>gem install antage-merb-recaptcha --source=http://gems.github.com</code></pre>
11
-
12
- Add following line in <tt>config/dependencies.rb</tt> of your web application:
13
- <pre><code>dependency "antage-merb-recaptcha", "~> 1.0.0", :require_as => "merb-recaptcha"</code></pre>
14
-
15
- Sign up at "Recaptcha":http://recaptcha.net and get public and private keys. Add keys in <tt>config/init.rb</tt>:
16
- <pre><code>Merb::BootLoader.after_app_loads do
17
- Merb::Plugins.config[:merb_recaptcha][:public_key] = "... here your public key ..."
18
- Merb::Plugins.config[:merb_recaptcha][:private_key] = "... here your private key ..."
19
- end</code></pre>
20
-
21
- h2. Usage
22
-
23
- Just add helper in your form:
24
- <pre><code><%= form_for @users, :action => resource(:users), :method => :post do %>
25
- .....
26
- <%= recaptcha_tags %>
27
- <%= submit "Send" %>
28
- <% end %></code></pre>
29
-
30
- And then check captcha in controller:
31
- <pre><code>class Users < Application
32
- ......
33
- def create(user)
34
- @user = User.new(user)
35
- if (captcha_correct = recaptcha_valid?) && @user.save
36
- redirect resource(@user)
37
- else
38
- unless captcha_correct
39
- @user.valid?
40
- @user.errors.add(:general, "Captcha code is incorrect")
41
- end
42
- render :new
43
- end
44
- ......
45
- end</code></pre>