class Crea::BaseError
Public Class Methods
build_error(error, context)
click to toggle source
# File lib/crea/base_error.rb, line 16 def self.build_error(error, context) if error.message == 'Unable to acquire database lock' raise Crea::RemoteDatabaseLockError, error.message, build_backtrace(error) end if error.message.include? 'Internal Error' raise Crea::RemoteNodeError, error.message, build_backtrace(error) end if error.message.include? 'Server error' raise Crea::RemoteNodeError, error.message, build_backtrace(error) end if error.message.include? 'plugin not enabled' raise Crea::PluginNotEnabledError, error.message, build_backtrace(error) end if error.message.include? 'argument' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Invalid params' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.start_with? 'Bad Cast:' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'prefix_len' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Parse Error' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'unknown key' raise Crea::ArgumentError, "#{context}: #{error.message} (or content has been deleted)", build_backtrace(error) end if error.message.include? 'Comment is not in account\'s comments' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Could not find comment' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'unable to convert ISO-formatted string to fc::time_point_sec' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Input data have to treated as object.' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'base.amount > share_type(0)' raise Crea::ArgumentError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'blk->transactions.size() > itr->trx_in_block' raise Crea::VirtualOperationsNotAllowedError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'A transaction must have at least one operation' raise Crea::EmptyTransactionError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'transaction expiration exception' raise Crea::TransactionExpiredError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Duplicate transaction check failed' raise Crea::DuplicateTransactionError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'signature is not canonical' raise Crea::NonCanonicalSignatureError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'attempting to push a block that is too old' raise Crea::BlockTooOldError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'irrelevant signature' raise Crea::IrrelevantSignatureError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'missing required posting authority' raise Crea::MissingPostingAuthorityError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'missing required active authority' raise Crea::MissingActiveAuthorityError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'missing required owner authority' raise Crea::MissingOwnerAuthorityError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'missing required other authority' raise Crea::MissingOtherAuthorityError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Upstream response error' raise Crea::UpstreamResponseError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Bad or missing upstream response' raise Crea::BadOrMissingUpstreamResponseError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'operator has disabled operation indexing by transaction_id' raise Crea::TransactionIndexDisabledError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'is_valid_account_name' raise Crea::InvalidAccountError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include?('Method') && error.message.include?(' does not exist.') raise Crea::UnknownMethodError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Invalid operation name' raise Crea::UnknownOperationError, "#{context}: #{error.message}", build_backtrace(error) end if error.message =~ /Invalid object name: .+_operation/ raise Crea::UnknownOperationError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Author not found' raise Crea::AuthorNotFoundError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? ' != fc::time_point_sec::maximum()' raise Crea::ReachedMaximumTimeError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Cannot transfer a negative amount (aka: stealing)' raise Crea::TheftError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'Must transfer a nonzero amount' raise Crea::NonZeroRequiredError, "#{context}: #{error.message}", build_backtrace(error) end if error.message.include? 'is_asset_type' raise Crea::UnexpectedAssetError, "#{context}: #{error.message}", build_backtrace(error) end puts JSON.pretty_generate(error) if ENV['DEBUG'] raise UnknownError, "#{context}: #{error.message}", build_backtrace(error) end
new(error = nil, cause = nil)
click to toggle source
# File lib/crea/base_error.rb, line 3 def initialize(error = nil, cause = nil) @error = error @cause = cause end
Private Class Methods
build_backtrace(error)
click to toggle source
# File lib/crea/base_error.rb, line 173 def self.build_backtrace(error) backtrace = Thread.current.backtrace.reject{ |line| line =~ /base_error/ } JSON.pretty_generate(error) + "\n" + backtrace.join("\n") end
Public Instance Methods
to_s()
click to toggle source
# File lib/crea/base_error.rb, line 8 def to_s detail = {} detail[:error] = @error if !!@error detail[:cause] = @cause if !!@cause JSON[detail] rescue detail.to_s end