156 lines
4.1 KiB
Ruby
156 lines
4.1 KiB
Ruby
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
|