module ConfirmationCode::Service::Damatu

Constants

ACCOUNT_URL
HOST
RECOGNITION_ERROR_URL
UPLOAD_LOCAL_URL
UPLOAD_URL

Attributes

app_id[R]
app_key[R]

Public Instance Methods

account(options = {}) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 74
def account(options = {})
  account_options = damatu_options(options)
  account_options['sign'] = sign(account_options['user'])
  response = client.get(ACCOUNT_URL, account_options)
  result(JSON.parse(response.body))
end
client() click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 36
def client
  @client ||= HTTPClient.new
end
damatu_options(options) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 89
def damatu_options(options)
  damatu_options = {}
  damatu_options['appID'] = @app_id
  damatu_options['user'] = options[:user_name]
  damatu_options['pwd'] = get_pwd(options[:user_name], options[:user_pw])
  damatu_options['type'] = options[:type] unless options[:type].nil?
  return damatu_options
end
get_pwd(user, pwd) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 44
def get_pwd(user, pwd)
  return md5(@app_key + md5(md5(user) + md5(pwd)))
end
md5(value) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 40
def md5(value)
  return Digest::MD5.hexdigest(value)
end
recognition_error(ret_id, options = {}) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 81
def recognition_error(ret_id, options = {})
  recognition_options = damatu_options(options)
  recognition_options['id'] = ret_id.to_s
  recognition_options['sign'] = sign(recognition_options['user'], ret_id.to_s.bytes)
  response = client.post(RECOGNITION_ERROR_URL, recognition_options)
  result(JSON.parse(response.body))
end
result(body) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 98
def result(body)
  {
      "success" => body['ret'] == 0,
      "data" => body.except('ret', 'sign', 'cookie')
  }
end
set_app_key(app_key) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 32
def set_app_key(app_key)
  @app_key = app_key
end
set_extra_options(options) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 27
def set_extra_options(options)
  @app_key = options[:app_key]
  @app_id = options[:app_id]
end
sign(user, param = []) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 48
def sign(user, param = [])
  encode_str = (@app_key.bytes + user.bytes + param).pack('c*')
  return md5(encode_str)[0..7]
end
upload(image_url, options = {}) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 53
def upload(image_url, options = {})
  upload_options = damatu_options(options)
  upload_options['url'] = CGI::escape(image_url)
  upload_options['sign'] = sign(upload_options['user'], image_url.bytes)
  upload_options['type'] = 200 if upload_options['type'].nil?
  response = client.get(UPLOAD_URL, upload_options)
  result(JSON.parse(response.body))
end
upload_local(image_path, options = {}) click to toggle source
# File lib/confirmation_code/service/damatu.rb, line 62
def upload_local(image_path, options = {})
  upload_options = damatu_options(options)
  upload_options['type'] = 200 if upload_options['type'].nil?
  byte_data = File.read(image_path)
  File.open(image_path) do |file|
    upload_options['file'] = file
    upload_options['sign'] = sign(upload_options['user'], byte_data.bytes)
    response = client.post(UPLOAD_LOCAL_URL, upload_options)
    result(JSON.parse(response.body))
  end
end