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