Sha256: c01ff1af410d2a765fbea5e744a22e0127de4a8221cab1924d22af8125e3bd51

Contents?: true

Size: 1.11 KB

Versions: 5

Compression:

Stored size: 1.11 KB

Contents

require "resolv"

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 =~ Resolv::IPv4::Regex) || (ip =~ Resolv::IPv6::Regex))
          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
          regex_union = Regexp.union(URI::MailTo::EMAIL_REGEXP, Resolv::IPv4::Regex, Resolv::IPv6::Regex)
          unless email_or_ip =~ regex_union
            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

5 entries across 5 versions & 2 rubygems

Version Path
emailage-1.1.2 lib/emailage/validation.rb
HornsAndHooves-emailage-1.1.0.1 lib/emailage/validation.rb
emailage-1.1.0 lib/emailage/validation.rb
emailage-1.0.4 lib/emailage/validation.rb
emailage-1.0.3 lib/emailage/validation.rb