module Recaptcha
Constants
- DEFAULT_TIMEOUT
- RESPONSE_LIMIT
- VERSION
Public Class Methods
action_valid?(action, expected_action)
click to toggle source
# File lib/recaptcha.rb, line 90 def self.action_valid?(action, expected_action) case expected_action when nil, FalseClass then true else action == expected_action end end
api_verification(verify_hash, timeout: nil)
click to toggle source
# File lib/recaptcha.rb, line 108 def self.api_verification(verify_hash, timeout: nil) timeout ||= DEFAULT_TIMEOUT http = if configuration.proxy proxy_server = URI.parse(configuration.proxy) Net::HTTP::Proxy(proxy_server.host, proxy_server.port, proxy_server.user, proxy_server.password) else Net::HTTP end query = URI.encode_www_form(verify_hash) uri = URI.parse(configuration.verify_url + '?' + query) http_instance = http.new(uri.host, uri.port) http_instance.read_timeout = http_instance.open_timeout = timeout http_instance.use_ssl = true if uri.port == 443 request = Net::HTTP::Get.new(uri.request_uri) JSON.parse(http_instance.request(request).body) end
configuration()
click to toggle source
Gives access to the current Configuration
.
# File lib/recaptcha.rb, line 26 def self.configuration @configuration ||= Configuration.new end
configure() { |config| ... }
click to toggle source
Allows easy setting of multiple configuration options. See Configuration
for all available options.
# File lib/recaptcha.rb, line 36 def self.configure config = configuration yield(config) end
hostname_valid?(hostname, validation)
click to toggle source
# File lib/recaptcha.rb, line 80 def self.hostname_valid?(hostname, validation) validation ||= configuration.hostname case validation when nil, FalseClass then true when String then validation == hostname else validation.call(hostname) end end
invalid_response?(resp)
click to toggle source
# File lib/recaptcha.rb, line 58 def self.invalid_response?(resp) resp.empty? || resp.length > RESPONSE_LIMIT end
score_above_threshold?(score, minimum_score)
click to toggle source
Returns true iff score is greater or equal to (>=) minimum_score, or if no minimum_score was specified
# File lib/recaptcha.rb, line 98 def self.score_above_threshold?(score, minimum_score) return true if minimum_score.nil? return false if score.nil? case minimum_score when nil, FalseClass then true else score >= minimum_score end end
skip_env?(env)
click to toggle source
# File lib/recaptcha.rb, line 54 def self.skip_env?(env) configuration.skip_verify_env.include?(env || configuration.default_env) end
verify_via_api_call(response, options)
click to toggle source
# File lib/recaptcha.rb, line 62 def self.verify_via_api_call(response, options) secret_key = options.fetch(:secret_key) { configuration.secret_key! } verify_hash = { 'secret' => secret_key, 'response' => response } verify_hash['remoteip'] = options[:remote_ip] if options.key?(:remote_ip) reply = api_verification(verify_hash, timeout: options[:timeout]) success = reply['success'].to_s == 'true' && hostname_valid?(reply['hostname'], options[:hostname]) && action_valid?(reply['action'], options[:action]) && score_above_threshold?(reply['score'], options[:minimum_score]) if options[:with_reply] == true return success, reply else return success end end
with_configuration(config) { || ... }
click to toggle source
# File lib/recaptcha.rb, line 41 def self.with_configuration(config) original_config = {} config.each do |key, value| original_config[key] = configuration.send(key) configuration.send("#{key}=", value) end yield if block_given? ensure original_config.each { |key, value| configuration.send("#{key}=", value) } end