class AntigateRb::Client

Public Class Methods

new(options = {}) click to toggle source
# File lib/antigate_rb/client.rb, line 8
def initialize(options = {})
  @retries_count = options.delete(:retries_count) || 10
  @sleep = options.delete(:sleep) || 5
  @options = AntigateRb.configuration.options.merge(options)
end

Public Instance Methods

check() click to toggle source
# File lib/antigate_rb/client.rb, line 26
def check
  return if @captcha_id.blank?
  begin
    get_status
  rescue CaptchaNotReady => e
    attempt ||= @retries_count
    raise e if (attempt -= 1) < 0
    sleep @sleep
    retry
  end
end
decode(image) click to toggle source
# File lib/antigate_rb/client.rb, line 14
def decode(image)
  case request_image(image)
  when /OK\|(.+)/
    @captcha_id = $1
    check
  when /^ERROR_(.+)/
    raise error_class($1)
  else
    raise UnknownResponse
  end
end
get_balance() click to toggle source
# File lib/antigate_rb/client.rb, line 43
def get_balance
  request_balance
end
get_stats(date = Date.today) click to toggle source
# File lib/antigate_rb/client.rb, line 47
def get_stats(date = Date.today)
  request_stats date
end
report_bad() click to toggle source
# File lib/antigate_rb/client.rb, line 38
def report_bad
  return if @captcha_id.blank?
  request_report_bad
end

Private Instance Methods

error_class(string) click to toggle source
# File lib/antigate_rb/client.rb, line 106
def error_class(string)
  "AntigateRb::#{string.downcase.classify}".constantize
rescue NameError
  UnknownErrorResponse
end
get_status() click to toggle source
# File lib/antigate_rb/client.rb, line 53
def get_status
  case request_status
  when /^OK\|(.+)/
    $1
  when 'CAPCHA_NOT_READY'
    raise CaptchaNotReady
  when /^ERROR_(.+)/
    raise error_class($1)
  else
    raise UnknownResponse
  end
end
request(url, params) click to toggle source
# File lib/antigate_rb/client.rb, line 98
def request(url, params)
  request = HTTPI::Request.new.tap do |request|
    request.url = url
    request.body = params
  end
  HTTPI.post(request).body
end
request_balance() click to toggle source
# File lib/antigate_rb/client.rb, line 85
def request_balance
  request 'http://antigate.com/res.php',
    key: AntigateRb.configuration.key,
    action: 'getbalance'
end
request_image(image) click to toggle source
# File lib/antigate_rb/client.rb, line 73
def request_image(image)
  request 'http://antigate.com/in.php',
    @options.merge(method: 'base64', body: Base64.encode64(image))
end
request_report_bad() click to toggle source
# File lib/antigate_rb/client.rb, line 78
def request_report_bad
  request 'http://antigate.com/res.php',
    key: AntigateRb.configuration.key,
    action: 'reportbad',
    id: @captcha_id
end
request_stats(date) click to toggle source
# File lib/antigate_rb/client.rb, line 91
def request_stats(date)
  request 'http://antigate.com/res.php',
    key: AntigateRb.configuration.key,
    action: 'getstats',
    date: date.strftime('%Y-%m-%d')
end
request_status() click to toggle source
# File lib/antigate_rb/client.rb, line 66
def request_status
  request 'http://antigate.com/res.php',
    key: AntigateRb.configuration.key,
    action: 'get',
    id: @captcha_id
end