# Raised when an API object is not found.
class APINotFoundError < APIError
+ def render_opts
+ { :nothing => true, :status => :not_found }
+ end
end
# Raised when a precondition to an API action fails sanity check.
# Raised when the provided version is not equal to the latest in the db.
class APIVersionMismatchError < APIError
- def initialize(provided, latest)
- @provided, @latest = provided, latest
+ def initialize(id, type, provided, latest)
+ @id, @type, @provided, @latest = id, type, provided, latest
end
- attr_reader :provided, :latest
+ attr_reader :provided, :latest, :id, :type
def render_opts
{ :text => "Version mismatch: Provided " + provided.to_s +
- ", server had: " + latest.to_s, :status => :conflict }
+ ", server had: " + latest.to_s + " of " + type + " " + id.to_s,
+ :status => :conflict }
end
end
end
end
+ ##
+ # raised when user input couldn't be parsed
+ class APIBadUserInput < APIError
+ def initialize(message)
+ @message = message
+ end
+
+ def render_opts
+ { :text => message, :mime_type => "text/plain", :status => :bad_request }
+ end
+ end
+
# Helper methods for going to/from mercator and lat/lng.
class Mercator
include Math