Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
kiwi-errors / lib / kiwi / errors.rb
Size: Mime:
# frozen_string_literal: true

require 'semantic_logger'
require 'kiwi/errors/version'
require 'kiwi/errors/handler'
require 'kiwi/errors/renderer'

# SemanticLogger.default_level = :debug

module Kiwi
  # Kiwi Errors
  module Errors
    include Handler
    include Renderer
    # Error
    def logger
      @logger ||= SemanticLogger[self.class.name]
    end

    class Error < StandardError; end

    # Api Error
    class ApiError < Error
      attr_reader :code, :status
      def initialize(message, code, status)
        super(message)
        @code = code
        @status = status
      end
    end

    class Unauthorized < ApiError; end
    class RecordNotFound < ApiError; end

    # RecordInvaild
    class RecordInvalid < Error
      attr_reader :record

      def initialize(record = nil)
        @record = record if record

        message = 'Record invalid'

        super(message)
      end
    end

    def self.included(action)
      action.class_eval do
        handle_exception StandardError => :app_exception
      end
    end

    def app_exception(exception)
      logger.error exception
      sleep 0.5
      api_errors(exception)
    rescue StandardError => e
      p "Errors: #{e}"
    end
  end
end