module KickboxRails

Constants

VERSION

Attributes

configuration[RW]
provider[RW]

Public Class Methods

configure() { |configuration| ... } click to toggle source
# File lib/kickbox_rails.rb, line 10
def configure
  @configuration ||= Configuration.new
  yield(configuration)
  @provider = KickboxApi.new(url: @configuration.api_url,
                                end_point: @configuration.api_resource,
                                token: @configuration.api_key)
end
invalid?(email) click to toggle source
# File lib/kickbox_rails.rb, line 45
def invalid? email
  !valid? email
end
valid?(email) click to toggle source
# File lib/kickbox_rails.rb, line 32
def valid? email
  response = validate(email)
  valid_response?(response)
end
valid_response?(response) click to toggle source
# File lib/kickbox_rails.rb, line 37
def valid_response?(response)
  if @configuration.treat_unknown_as_valid
    [ 'valid', 'unknown' ].include?(response['result'])
  else
    [ 'valid' ].include?(response['result'])
  end
end
validate(email) click to toggle source
# File lib/kickbox_rails.rb, line 18
def validate email
  begin
    response = @provider.verify(email||String.new)
    # fallbacks if provider return success = false
    throw Exception unless response['success'] == 'true' || response['success'] == true

    response

  rescue Exception => e
    # If Kickbox service respond with Error we do fallback to basic validation
    basic_email_validation email
  end
end

Private Class Methods

basic_email_validation(email, options = {}) click to toggle source

Basic validation with standard regexp for emails

# File lib/kickbox_rails.rb, line 52
def basic_email_validation email, options = {}
  result = if (email =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i).nil?
    {
      'result' => 'invalid',
      'reason' => options[:reason] || "invalid_email"
    }
  else
    {
      'result' => 'valid',
    }
  end
end