class PhoneConnect::RealPhoneValidation

Attributes

execution_time[R]
phone_number[R]

Public Class Methods

new(phone_number) click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 10
def initialize(phone_number)
  @phone_number = phone_number
  normalize!
end

Public Instance Methods

connected?() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 15
def connected?
  status = response['status']
  return false unless status

  !!status.match(/^(connected|connected-75|busy|pending)$/i)
end
dnc_response() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 26
def dnc_response
  @parsed_response ||= dnc_validate
end
response() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 22
def response
  @parsed_response ||= validate
end

Private Instance Methods

dnc_validate() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 70
def dnc_validate
  start_time = Time.now
  retries = 3
  result = {}
  begin
    result = self.class.post('/rpvWebService/DNCLookup.php', options).parsed_response
  rescue Timeout::Error
    retries -= 1
    if retries.positive?
      sleep 1; retry
    end
    result = { 'status' => 'TIMEOUT', 'error_text' => 'Timeout' }
  rescue Exception => exception
    result = { 'status' => 'ERROR', 'error_text' => exception.to_s }
  end
  @execution_time = Time.now - start_time

  result
end
normalize!() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 32
def normalize!
  @phone_number =  @phone_number.to_s.gsub(/[^0-9]/, '')
  # Remove first digit `1` (US key) if the phone's length is 11 digits
  @phone_number[0] = '' if @phone_number.length == 11 && @phone_number[0] == '1'
end
options() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 38
def options
  {
    verify: false,
    timeout: PhoneConnect.configuration.timeout,
    body: {
      output: 'json',
      token: PhoneConnect.configuration.token,
      phone: @phone_number
    }
  }
end
validate() click to toggle source
# File lib/phone_connect/real_phone_validation.rb, line 50
def validate
  start_time = Time.now
  retries = 3
  result = {}
  begin
    result = self.class.post('/rpvWebService/RealPhoneValidationTurbo.php', options).parsed_response
  rescue Timeout::Error
    retries -= 1
    if retries.positive?
      sleep 1; retry
    end
    result = { 'status' => 'TIMEOUT', 'error_text' => 'Timeout' }
  rescue Exception => exception
    result = { 'status' => 'ERROR', 'error_text' => exception.to_s }
  end
  @execution_time = Time.now - start_time

  result
end