Create a proper exception class for invalid bounding box exceptions.

This commit is contained in:
Tom Hughes 2009-05-26 23:47:45 +00:00
parent 68ea927f5b
commit 40e920bd52
2 changed files with 20 additions and 4 deletions

View file

@ -12,20 +12,20 @@ module MapBoundary
def check_boundaries(min_lon, min_lat, max_lon, max_lat)
# check the bbox is sane
unless min_lon <= max_lon
raise("The minimum longitude must be less than the maximum longitude, but it wasn't")
raise OSM::APIBadBoundingBox.new("The minimum longitude must be less than the maximum longitude, but it wasn't")
end
unless min_lat <= max_lat
raise("The minimum latitude must be less than the maximum latitude, but it wasn't")
raise OSM::APIBadBoundingBox.new("The minimum latitude must be less than the maximum latitude, but it wasn't")
end
unless min_lon >= -180 && min_lat >= -90 && max_lon <= 180 && max_lat <= 90
# Due to sanitize_boundaries, it is highly unlikely we'll actually get here
raise("The latitudes must be between -90 and 90, and longitudes between -180 and 180")
raise OSM::APIBadBoundingBox.new("The latitudes must be between -90 and 90, and longitudes between -180 and 180")
end
# check the bbox isn't too large
requested_area = (max_lat-min_lat)*(max_lon-min_lon)
if requested_area > APP_CONFIG['max_request_area']
raise("The maximum bbox size is " + APP_CONFIG['max_request_area'].to_s +
raise OSM::APIBadBoundingBox.new("The maximum bbox size is " + APP_CONFIG['max_request_area'].to_s +
", and your request was too large. Either request a smaller area, or use planet.osm")
end
end

View file

@ -218,6 +218,22 @@ module OSM
end
end
##
# raised when bounding box is invalid
class APIBadBoundingBox < APIError
def initialize(message)
@message = message
end
def status
:bad_request
end
def to_s
@message
end
end
##
# raised when an API call is made using a method not supported on that URI
class APIBadMethodError < APIError