Sha256: 089a4849bc24357b291a570a5c6df3e30746e133657eaa25ac6b8f0c6085fafa

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require 'correios-cep'
require 'active_model'
require 'net/http'

module ActiveModel
  module Validations
    class CorreiosCepValidator < EachValidator
      CORREIOS_CEP_I18N_SCOPE = 'correios_cep.errors.messages'

      def validate_each(record, attribute, value)
        error_message_scope = begin
                                "#{CORREIOS_CEP_I18N_SCOPE}.not_exists" if ::Correios::CEP::AddressFinder.get(value).blank?
                              rescue EOFError, ::HTTP::ConnectionError
                                "#{CORREIOS_CEP_I18N_SCOPE}.connection_failed"
                              rescue ArgumentError
                                "#{CORREIOS_CEP_I18N_SCOPE}.invalid"
                              rescue ::Net::OpenTimeout, ::HTTP::TimeoutError
                                "#{CORREIOS_CEP_I18N_SCOPE}.timeouted"
                              end

        record.errors.add(attribute, I18n.t(error_message_scope, zipcode: value)) if error_message_scope.present?
      end
    end

    module HelperMethods
      def validates_correios_cep_of(*attributes)
        validates_with CorreiosCepValidator, _merge_attributes(attributes)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
validates-correios-cep-0.1.3 lib/validates-correios-cep/activemodel.rb