]> git.openstreetmap.org Git - rails.git/blobdiff - lib/osm.rb
Handle Timeout::Error exceptions which are caught by ActiveRecord.
[rails.git] / lib / osm.rb
index 554ebfaef7a6cb6e06d13710272fb9380b1a95b5..cb23b0c97eb6b0bda038e7dfbdb403b08898503f 100644 (file)
@@ -448,12 +448,20 @@ module OSM
 
   def self.IPLocation(ip_address)
     Timeout::timeout(4) do
-      Net::HTTP.start('api.hostip.info') do |http|
-        country = http.get("/country.php?ip=#{ip_address}").body
-        country = "GB" if country == "UK"
-        country = Country.find_by_code(country)
-        return { :minlon => country.min_lon, :minlat => country.min_lat, :maxlon => country.max_lon, :maxlat => country.max_lat }
+      ipinfo = Quova::IpInfo.new(ip_address)
+
+      if ipinfo.status == Quova::Success then
+        country = ipinfo.country_code
+      else
+        Net::HTTP.start('api.hostip.info') do |http|
+          country = http.get("/country.php?ip=#{ip_address}").body
+          country = "GB" if country == "UK"
+        end
       end
+
+      country = Country.find_by_code(country.upcase)
+
+      return { :minlon => country.min_lon, :minlat => country.min_lat, :maxlon => country.max_lon, :maxlat => country.max_lat }
     end
 
     return nil