shivabhusal/hulaki

View on GitHub
lib/hulaki/sms_handler/sms_validator.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Hulaki::SmsValidator
  attr_reader :errors, :to, :from, :message, :gateway
  RegexPhoneNumber = /(?:\+?|\b)[0-9]{10}\b/

  def initialize(params = {})
    @errors  = {}
    @to      = params.fetch(:to, params[:recipient])
    @message = params.fetch(:message, params[:msg])
  end

  def validate
    to      || (raise Hulaki::InvalidPhoneNumber, 'Recipient phone number should be present.')
    message || (raise Hulaki::InvalidMessageBody, 'Message body should be present.')

    check_if_number_invalid
  end

  def self.is_phone_number?(number)
    !is_not_phone_number?(number)
  end

  def self.is_not_phone_number?(number)
    number.match(RegexPhoneNumber).nil?
  end

  private
  def check_if_number_invalid
    RegexPhoneNumber.match(to) || (raise Hulaki::InvalidPhoneNumber,
                                         "Phone number '#{to}' is invalid.")
  end

end