module MailgunEmailValidator
Constants
- DEFAULT_VALIDATION_OPTIONS
- VERSION
Public Instance Methods
valid_email_with_mailgun?(email)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
mailgun_public_key()
click to toggle source
# File lib/mailgun_email_validator/validator.rb, line 50 def mailgun_public_key @@mailgun_public_key || ENV['MAILGUN_PUBLIC_KEY'] || raise("You need to supply your mailgun public api key") end
parsed_validation_response!(email)
click to toggle source
# File lib/mailgun_email_validator/validator.rb, line 45 def parsed_validation_response!(email) res = RestClient.get "https://api:#{mailgun_public_key}@api.mailgun.net/v2/address/validate", {params: {address: email}} JSON.parse(res) end