class RingCaptcha::RingCaptcha
Attributes
secure[RW]
Public Class Methods
new(app_key, secret_key)
click to toggle source
# File lib/ringcaptcha.rb, line 36 def initialize(app_key, secret_key) @app_key = app_key @secret_key = secret_key @retry_attempts = 0 @secure = true @status = -1 end
Public Instance Methods
is_valid?(pin_code, token)
click to toggle source
# File lib/ringcaptcha.rb, line 62 def is_valid?(pin_code, token) validate_pin_code(pin_code, token) @status == true end
validate_pin_code(pin_code, token)
click to toggle source
# File lib/ringcaptcha.rb, line 44 def validate_pin_code(pin_code, token) #TODO Check parameters data = {:secret_key => @secret_key, :token => token, :code => pin_code} sanitize_data(data) server = (@secure ? "https://" : "http://") + @@rc_server resource = "#{@app_key}/verify" begin response = verify_rest_call(server, resource, data) body = JSON.parse(response.body) @status = response.class.name == "Net::HTTPOK" ? body['status'] == "SUCCESS" : 0 rescue => e @status = 0 @message = e.message end return RingCaptchaVerification.new(body) end
Private Instance Methods
sanitize_data(data)
click to toggle source
# File lib/ringcaptcha.rb, line 69 def sanitize_data(data) data.each do |key,value| data[key] = URI::encode(value).strip end end
verify_rest_call(server, resource, data, port=80)
click to toggle source
# File lib/ringcaptcha.rb, line 75 def verify_rest_call(server, resource, data, port=80) port = @secure ? 443 : port url = "#{server}:#{port}/#{resource}" uri = URI.parse(url) https = Net::HTTP.new(uri.host,uri.port) https.use_ssl = @secure req = Net::HTTP::Post.new(uri.path, initheader = {'User-Agent' => @@user_agent}) req.set_form_data(data) res = https.request(req) case res when Net::HTTPSuccess, Net::HTTPRedirection res else raise RingCaptchaRequestError, 'ERROR_PROCESING_REQUEST' end end