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