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