Module: MailgunEmailValidator

Defined in:
lib/mailgun_email_validator/railtie.rb,
lib/mailgun_email_validator/version.rb,
lib/mailgun_email_validator/validator.rb

Defined Under Namespace

Classes: Railtie

Constant Summary collapse

VERSION =
"0.1.1"
DEFAULT_VALIDATION_OPTIONS =
{:on => :save, :allow_nil => false, :allow_blank => false, :message => nil}

Instance Method Summary collapse

Instance Method Details

#valid_email_with_mailgun?(email) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/mailgun_email_validator/validator.rb', line 9

def valid_email_with_mailgun?(email)
  !! parsed_validation_response!(email)["is_valid"]
end

#validates_as_email_with_mailgun(*attrs) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/mailgun_email_validator/validator.rb', line 21

def validates_as_email_with_mailgun(*attrs)
  options = DEFAULT_VALIDATION_OPTIONS
  options.update(attrs.extract_options!.symbolize_keys)

  send(validation_method(options[:on]), options) do |record, attr, value|
    if options[:allow_nil]
      return if record.nil?
    elsif options[:allow_blank]
      return if record.blank?
    else
      begin
        parsed = parsed_validation_response!(value)
        is_valid = !parsed["is_valid"].nil? ? parsed["is_valid"] : false
        message = options[:message] ? options[:message] : "supplied email is invalid."
        record.errors.add(attr, message) if !is_valid
      rescue
        validates record, email: true
      end
    end
  end
end

#validation_method(on) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/mailgun_email_validator/validator.rb', line 13

def validation_method(on)
  case on
    when :save   then :validate
    when :create then :validate_on_create
    when :update then :validate_on_update
  end
end