lib/hulaki/sms_handler/sms_validator.rb
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