class SmsCtrl::Case
Attributes
errors[RW]
expires_in[RW]
mobile_regexp[RW]
retry_limit[RW]
sender[RW]
Public Class Methods
new(name, options = {})
click to toggle source
# File lib/sms_ctrl/case.rb, line 6 def initialize name, options = {} @name = name options = SmsCtrl.default_options.merge(options) self.retry_limit = options[:retry_limit] self.expires_in = options[:expires_in] self.mobile_regexp = options[:mobile_regexp] self.sender = options[:sender] if options[:errors] self.errors = SmsCtrl.default_errors.merge(options[:errors]) else self.errors = SmsCtrl.default_errors end end
Public Instance Methods
check_code(mobile, code)
click to toggle source
check match
# File lib/sms_ctrl/case.rb, line 66 def check_code mobile, code cache_code = SmsCtrl.cache.read(code_cache_key(mobile.to_s)) return false if cache_code.nil? cache_code.to_s == code.to_s end
code_for(mobile)
click to toggle source
# File lib/sms_ctrl/case.rb, line 61 def code_for mobile SmsCtrl.cache.read(code_cache_key(mobile.to_s)) end
send_sms(mobile, code, params = {})
click to toggle source
# File lib/sms_ctrl/case.rb, line 22 def send_sms mobile, code, params = {} mobile = mobile.to_s unless mobile =~ mobile_regexp return { success: false, error: errors[:illegal_mobile], error_type: :illegal_mobile } end if retry_limit > 0 && SmsCtrl.cache.read(retry_limit_key(mobile)) return { success: false, error: errors[:retry_limit], error_type: :retry_limit } end if SmsCtrl.debug code = '123456' data = 'debug send ok' else data = @sender.call(mobile, code, params) end result = { success: true, data: data } if retry_limit > 0 SmsCtrl.cache.write(retry_limit_key(mobile), 'true', expires_in: retry_limit) end SmsCtrl.cache.write(code_cache_key(mobile), code, expires_in: expires_in) result end
Private Instance Methods
code_cache_key(mobile)
click to toggle source
# File lib/sms_ctrl/case.rb, line 79 def code_cache_key mobile "sms_ctrl:#{@name}:code_cache_key:#{mobile}" end
retry_limit_key(mobile)
click to toggle source
keys
# File lib/sms_ctrl/case.rb, line 75 def retry_limit_key mobile "sms_ctrl:#{@name}:retry_limit_key:#{mobile}" end