Create a proper exception class for invalid bounding box exceptions.
authorTom Hughes <tom@compton.nu>
Tue, 26 May 2009 23:47:45 +0000 (23:47 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 26 May 2009 23:47:45 +0000 (23:47 +0000)
lib/map_boundary.rb
lib/osm.rb

index 153d657..6ac7e9f 100644 (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
index 4c99de2..5be2da5 100644 (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