Repository URL to install this package:
|
Version:
0.1.7 ▾
|
require 'nanoid'
require 'elixir_pay/errors/version'
require 'elixir_pay/errors/api_error'
require 'elixir_pay/errors/handler'
require 'elixir_pay/errors/renderer'
module ElixirPay
# Error Code And Handler
module Errors
include Handler
include Renderer
def self.included(action)
action.class_eval do
handle_exception StandardError => :app_exception
handle_exception ScriptError => :app_exception
handle_exception SecurityError => :app_exception
handle_exception NoMemoryError => :app_exception
end
end
def app_exception(exception)
error = if exception.is_a? ElixirPay::Errors::ApiError
format_error(exception)
else
format_standard_error(exception)
end
if respond_to?(:handle_exception)
send(:handle_exception, exception) if respond_to?(:handle_exception)
else
logger_warn(exception)
Hanami.logger.error error, class_name: self.class.name
end
api_errors(exception)
rescue StandardError => e
if respond_to?(:handle_exception)
send(:handle_exception, exception) if respond_to?(:handle_exception)
else
Hanami.logger.error format_standard_error(e)
end
end
def logger_warn(exception)
return unless exception.is_a? ElixirPay::Errors::ApiError
return if exception.error.nil?
Hanami.logger.warn exception.error.message
end
def format_error(exception)
message = {
title: "[#{Paint[exception&.title || exception.class.name, :blue]}]",
code: "[#{Paint[exception&.code || 500, :yellow]}]",
message: "[#{Paint[exception.message, :red]}]"
}
"#{message.map { |_, v| v }.join(' ')}\n#{exception.backtrace.join("\n")}"
end
def format_standard_error(exception)
message = {
title: "[#{Paint[exception.class.name, :blue]}]",
code: 500,
message: "[#{Paint[exception.message, :red]}]"
}
"#{message.map { |_, v| v }.join(' ')}\n#{exception.backtrace.join("\n")}"
end
end
end