Sha256: 51ac93c3c49c3078a32e48a2933505df8795346c4ec521248c7444f8f749ec46

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

module Emailage
  module Validation
    class << self
      
      def validate_email!(email)
        unless email =~ /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/
          raise ArgumentError, "#{email} is not a valid email address."
        end
      end
      
      def validate_ip!(ip)
        unless ip =~ /\A\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/
          raise ArgumentError, "#{ip} is not a valid IP address."
        end
      end
      
      def validate_email_or_ip!(email_or_ip)
        if email_or_ip.is_a? Array
          if email_or_ip.size != 2
            raise ArgumentError, "an array must contain exactly one Email and one IP address. #{email_or_ip} is given."
          end
          validate_email! email_or_ip.first
          validate_ip! email_or_ip.last
        else
          unless email_or_ip =~ /\A([^@\s]+@([^@\s]+\.)+[^@\s]+|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\z/
            raise ArgumentError, "#{email_or_ip} is neither a valid IP address nor a valid email address."
          end
        end
      end
      
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
emailage-1.0.0 lib/emailage/validation.rb
emailage-0.1.0 lib/emailage/validation.rb