You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.1 KiB

class RecordNotFound < StandardError; end
class NoHTML5Compliant < Exception; end
module CartoDB
class BaseCartoDBError < StandardError
APPENDED_MESSAGE_PREFIX = '. Original Message: '
def initialize(message, parent_exception = nil)
if parent_exception.nil?
super(message)
else
super(message + APPENDED_MESSAGE_PREFIX + parent_exception.message)
set_backtrace(parent_exception.backtrace)
end
end
end
class InvalidUser < StandardError; end
class InvalidTableName < StandardError; end
class InvalidColumnName < StandardError; end
class InvalidGeomType < StandardError; end
class InvalidSRID < StandardError; end
class InvalidGeoJSONFormat < StandardError; end
class BoundingBoxError < StandardError; end
class QueryNotAllowed < StandardError; end
class InvalidMember < StandardError; end
class TableError < StandardError; end
class CartoDBfyInvalidID < StandardError; end
class CartoDBfyError < StandardError; end
class InvalidInterval < StandardError
def detail
Cartodb.error_codes[:invalid_interval]
end
end
# importer errors
class EmptyFile < StandardError
def detail
Cartodb.error_codes[:empty_file]
end
end
class InvalidUrl < StandardError
def detail
Cartodb.error_codes[:url_error]
end
end
class InvalidFile < StandardError
def detail
Cartodb.error_codes[:file_error]
end
end
class TableCopyError < StandardError
def detail
Cartodb.error_codes[:table_copy_error]
end
end
class QuotaExceeded < StandardError
def detail
Cartodb.error_codes[:quota_error].merge(:raw_error => self.message)
end
end
class DataSourceError < BaseCartoDBError; end
class ModelAlreadyExistsError < StandardError; end
# database errors
class DbError < StandardError
attr_accessor :message
def initialize(msg)
# Example of an error (newline included):
# Pgerror: error: relation "antantaric_species" does not exist
# LINE 1: insert into antantaric_species (name_of_species,family) valu...
# So we suppose everything we need is in the first line
@message = msg.split("\n").first.gsub(/pgerror: error:/i,'').strip
end
def to_s; @message; end
end
class TableNotExists < DbError; end
class ColumnNotExists < DbError; end
class ErrorRunningQuery < DbError
attr_accessor :db_message # the error message from the database
attr_accessor :syntax_message # the query and a marker where the error is
def initialize(message)
super(message)
@db_message = message.split("\n")[0]
@syntax_message = message.split("\n")[1..-1].join("\n")
end
end
class InvalidType < DbError
attr_accessor :db_message # the error message from the database
attr_accessor :syntax_message # the query and a marker where the error is
def initialize(message)
@db_message = message.split("\n")[0]
@syntax_message = message.split("\n")[1..-1].join("\n")
end
end
class InvalidQuery < StandardError
attr_accessor :message
def initialize
@message = 'Only SELECT statement is allowed'
end
end
class EmptyAttributes < StandardError
attr_accessor :error_message
def initialize(message)
@error_message = message
end
end
class InvalidAttributes < StandardError
attr_accessor :error_message
def initialize(message)
@error_message = message
end
end
class NonConvertibleData < StandardError; end
class CentralCommunicationFailure < StandardError
attr_accessor :message, :response_code, :errors
def initialize(response)
@message = "Application server responded with http #{response.code}: #{response.body}"
@response_code = response.code
@errors = JSON.parse(response.body)['errors']
@errors = [@errors] unless @errors.is_a?(Array)
rescue StandardError
@errors = ['Couldn\'t parse response errors.']
end
def user_message
"There was a problem with authentication server. #{@errors.join(' ; ')}"
end
end
class SharedEntitiesError < StandardError; end
end