class GtRubySdk::Base
Constants
- RESPONSE_STATUS
Attributes
captcha_id[R]
private_key[R]
response[R]
Public Class Methods
new(captcha_id, private_key)
click to toggle source
构造函数
# File lib/gt_ruby_sdk.rb, line 15 def initialize(captcha_id, private_key) @captcha_id = captcha_id @private_key = private_key end
Public Instance Methods
local_validate(challenge, pin_code, seccode)
click to toggle source
极验服务器状态宕机的二次验证接口
# File lib/gt_ruby_sdk.rb, line 53 def local_validate(challenge, pin_code, seccode) GtRubySdk::LocalServer.validate(challenge, pin_code, seccode) end
pretreat(user_id = nil)
click to toggle source
预处理接口: 判断极验服务器是否down机
# File lib/gt_ruby_sdk.rb, line 21 def pretreat(user_id = nil) challenge = GtRubySdk::RemoteServer.register(captcha_id, user_id) return failed_pretreatment if challenge.size != 32 successful_pretreatment(challenge) rescue Faraday::Error::ClientError failed_pretreatment end
remote_validate(challenge, pin_code, seccode, user_id = nil)
click to toggle source
极验服务器状态正常的二次验证接口
# File lib/gt_ruby_sdk.rb, line 39 def remote_validate(challenge, pin_code, seccode, user_id = nil) return false unless pin_code_validated?(challenge, pin_code) data = { seccode: seccode, sdk: GtRubySdk::VERSION } data[:user_id] = user_id if user_id.present? GtRubySdk::RemoteServer.validate(data) == Digest::MD5.hexdigest(seccode) end
response_json()
click to toggle source
获取预处理结果的接口
# File lib/gt_ruby_sdk.rb, line 32 def response_json return if response.blank? JSON.generate(response) end
Private Instance Methods
build_response(success, challenge)
click to toggle source
# File lib/gt_ruby_sdk.rb, line 75 def build_response(success, challenge) { success: success ? RESPONSE_STATUS[:success] : RESPONSE_STATUS[:failure], gt: captcha_id, challenge: challenge } end
failed_pretreatment()
click to toggle source
# File lib/gt_ruby_sdk.rb, line 59 def failed_pretreatment challenge = GtRubySdk::LocalServer.register @response = build_response(false, challenge) RESPONSE_STATUS[:failure] end
pin_code_validated?(challenge, pin_code)
click to toggle source
# File lib/gt_ruby_sdk.rb, line 83 def pin_code_validated?(challenge, pin_code) return false if pin_code.size != 32 Digest::MD5.hexdigest([private_key, 'geetest'.freeze, challenge].join) == pin_code end
successful_pretreatment(challenge)
click to toggle source
# File lib/gt_ruby_sdk.rb, line 67 def successful_pretreatment(challenge) encrypted_challenge = Digest::MD5.hexdigest([challenge, private_key].join) @response = build_response(true, encrypted_challenge) RESPONSE_STATUS[:success] end