class Authy::OneTouch

Constants

MAX_STRING_SIZE

Maximum String size for the parameters

Public Class Methods

approval_request_status(params) click to toggle source
# File lib/authy/onetouch.rb, line 40
def self.approval_request_status(params)
  uuid = params.delete(:uuid) || params.delete('uuid')

  get_request("onetouch/json/approval_requests/#{uuid}")
end
send_approval_request(params) click to toggle source

options:

:id
:details Hash containing the approval request details
:hidden_details
:phone_number The persons phone number.
# File lib/authy/onetouch.rb, line 12
def self.send_approval_request(params)
  user_id           = params.delete(:id) || params.delete('id')
  message           = (params.delete(:message) || params.delete('message')).to_s
  details           = params.delete(:details) || params.delete('details')
  hidden_details    = params.delete(:hidden_details) || params.delete('hidden_details')
  logos             = params.delete(:logos) || params.delete('logos')
  seconds_to_expire = params.delete(:seconds_to_expire) || params.delete('seconds_to_expire')

  return invalid_response("message cannot be blank") if message.nil? || message.empty?
  return invalid_response('user id is invalid') unless is_digit?(user_id)

  begin
    self.clean_hash!(details)
    self.clean_hash!(hidden_details)
    logos = self.clean_logos!(logos)
  rescue => e
    return invalid_response("Invalid parameters: #{e.message}")
  end

  params = { message: message[0, MAX_STRING_SIZE] }
  params[:details]           = details unless details.nil?
  params[:hidden_details]    = hidden_details unless hidden_details.nil?
  params[:logos]             = logos unless logos.nil?
  params[:seconds_to_expire] = seconds_to_expire unless seconds_to_expire.nil?

  post_request("onetouch/json/users/#{user_id}/approval_requests", params)
end

Private Class Methods

clean_hash!(test_hash) click to toggle source
# File lib/authy/onetouch.rb, line 47
def self.clean_hash!(test_hash)
  return if test_hash.nil? # Allow nil hash

  raise "Hash expected. Got: #{test_hash.class}" unless test_hash.is_a? Hash
  test_hash = test_hash.map { |k, v| [k, v.to_s] }.to_h
end
clean_logos!(logos) click to toggle source
# File lib/authy/onetouch.rb, line 54
def self.clean_logos!(logos)
  return if logos.nil? # Allow nil logos

  raise "Array expected. Got #{logos.class}" unless logos.is_a? Array
  logos = logos.map do |logo|
    raise "Invalid logo format: #{logo}" unless logo.is_a? Hash
    res = logo.delete(:res) || logo.delete('res')
    url = logo.delete(:url) || logo.delete('url')

    raise "Logo should include res and url" if res.nil? || url.nil?

    # We ignore any additional parameter on the logos, and truncate
    # string size to the maximum allowed.
    { res: res[0, MAX_STRING_SIZE], url: url[0, MAX_STRING_SIZE] }
  end
end