From 8516ad87b36b23ec49c99654a0281f7c9d0673d0 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 3 Feb 2008 15:38:02 +0000 Subject: [PATCH 1/1] Add missing sanitise_boundaries method that the API controller was trying to call. --- lib/map_boundary.rb | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/map_boundary.rb b/lib/map_boundary.rb index f337c12f1..9b39c9342 100644 --- a/lib/map_boundary.rb +++ b/lib/map_boundary.rb @@ -1,21 +1,30 @@ 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") - end - unless min_lat <= max_lat - raise("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 - raise("The latitudes must be between -90 and 90, and longitudes between -180 and 180") - end + def sanitise_boundaries(bbox) + min_lon = [bbox[0].to_f,-180].max + min_lat = [bbox[1].to_f,-90].max + max_lon = [bbox[2].to_f,+180].min + max_lat = [bbox[3].to_f,+90].min - # 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 + - ", and your request was too large. Either request a smaller area, or use planet.osm") - end + return min_lon, min_lat, max_lon, max_lat + end + + 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") + end + unless min_lat <= max_lat + raise("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 + raise("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 + + ", and your request was too large. Either request a smaller area, or use planet.osm") end + end end -- 2.43.2