Sha256: c783581cd3303a4c16f3519c755fe7c572b45fe94e559c6f3e8057f3ee807c88

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 KB

Contents

module CorreiosSigep
  module LogisticReverse
    module CollectNumberActions
      class ProcessInvalidRequest
        def initialize(response)
          @response = response
        end

        def run
          klass = (errors[error_code] || errors[new_error_code] || Models::Errors::UnknownError)
          raise klass.new(error_message)
        end

        private

        def errors
          {
            Models::CorreiosResponseCodes::TICKET_ALREADY_USED => Models::Errors::TicketAlreadyUsed,
            Models::CorreiosResponseCodes::UNAVAILABLE_SERVICE => Models::Errors::UnavailableService,
            Models::CorreiosResponseCodes::INEXISTENT_ZIPCODE => Models::Errors::InexistentZipcode,
            Models::CorreiosResponseCodes::UNAVAILABLE_HOUSE_COLLECT => Models::Errors::UnavailableHouseCollect,
            Models::CorreiosResponseCodes::COLLECT_NOT_ANSWERED_FOR_THE_ZIPCODE => Models::Errors::CollectNotAnsweredForTheZipcode,
            Models::CorreiosResponseCodes::NOT_CONFIGURED_CLIENT => Models::Errors::NotConfiguredClient,
            Models::CorreiosResponseCodes::INVALID_CONTRACT => Models::Errors::InvalidContract,
            Models::CorreiosResponseCodes::INVALID_DECLARED_VALUE => Models::Errors::InvalidDeclaredValue,
            Models::CorreiosResponseCodes::LOW_DECLARED_VALUE => Models::Errors::LowDeclaredValue
          }
        end

        def error_code
          return nil if @response.search('//cod_erro').empty?
          @response.search('//cod_erro').text.to_i
        end

        def new_error_code
          return nil if @response.search('//codigo_erro').empty?
          @response.search('//codigo_erro').text.to_i
        end

        def error_message
          "#{@response.search('//msg_erro').text} #{@response.search('//descricao_erro').text}".strip
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
correios_sigep-2.2.0 lib/correios_sigep/logistic_reverse/collect_number_actions/process_invalid_request.rb
correios_sigep-2.1.1 lib/correios_sigep/logistic_reverse/collect_number_actions/process_invalid_request.rb
correios_sigep-2.1.0 lib/correios_sigep/logistic_reverse/collect_number_actions/process_invalid_request.rb