Sha256: 0d2af728b11c01d7dfa4f3b2986f49f8ffdcb79e1feee19c2654648e61dd5460

Contents?: true

Size: 601 Bytes

Versions: 5

Compression:

Stored size: 601 Bytes

Contents

# frozen_string_literal: true

module NovaposhtaApi
  module Middlewares
    class ErrorHandling < Faraday::Middleware
      SEPARATOR = ', '

      def on_complete(env)
        return if env.response_body['success']

        fail(NovaposhtaApi::ResponseError, error_message(env.body))
      end

      def error_message(body)
        (from_codes(body['errorCodes']) || body['errors'] || body['message']).join(SEPARATOR)
      end

      def from_codes(codes = [])
        return nil if codes.blank?

        codes.map { |code| I18n.t(code, scope: %i[novaposhta errors]) }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
novaposhta_api-0.2.1 lib/novaposhta_api/middlewares/error_handling.rb
novaposhta_api-0.2.0 lib/novaposhta_api/middlewares/error_handling.rb
novaposhta_api-0.1.9 lib/novaposhta_api/middlewares/error_handling.rb
novaposhta_api-0.1.8 lib/novaposhta_api/middlewares/error_handling.rb
novaposhta_api-0.1.7 lib/novaposhta_api/middlewares/error_handling.rb