<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -426,7 +426,9 @@ module Geokit
             end  
           end
           return geoloc
-        else 
+        elsif doc.elements['//kml/Response/Status/code'].text == '620'
+           raise &quot;Google returned a 620 status, too many queries. The given key has gone over the requests limit in the 24 hour period or has submitted too many requests in too short a period of time. If you're sending multiple requests in parallel or in a tight loop, use a timer or pause in your code to make sure you don't send the requests too quickly.&quot;
+        else
           logger.info &quot;Google was unable to geocode address: &quot;+address
           return GeoLoc.new
         end</diff>
      <filename>lib/geokit/geocoders.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,10 @@ class GoogleGeocoderTest &lt; BaseGeocoderTest #:nodoc: all
   
   GOOGLE_MULTI=&quot;&lt;?xml version='1.0' encoding='UTF-8'?&gt;\n&lt;kml xmlns='http://earth.google.com/kml/2.0'&gt;&lt;Response&gt;\n  &lt;name&gt;via Sandro Pertini 8, Ossona, MI&lt;/name&gt;\n  &lt;Status&gt;\n    &lt;code&gt;200&lt;/code&gt;\n    &lt;request&gt;geocode&lt;/request&gt;\n  &lt;/Status&gt;\n  &lt;Placemark id='p1'&gt;\n    &lt;address&gt;Via Sandro Pertini, 8, 20010 Mesero MI, Italy&lt;/address&gt;\n    &lt;AddressDetails Accuracy='8' xmlns='urn:oasis:names:tc:ciq:xsdschema:xAL:2.0'&gt;&lt;Country&gt;&lt;CountryNameCode&gt;IT&lt;/CountryNameCode&gt;&lt;CountryName&gt;Italy&lt;/CountryName&gt;&lt;AdministrativeArea&gt;&lt;AdministrativeAreaName&gt;Lombardy&lt;/AdministrativeAreaName&gt;&lt;SubAdministrativeArea&gt;&lt;SubAdministrativeAreaName&gt;Milan&lt;/SubAdministrativeAreaName&gt;&lt;Locality&gt;&lt;LocalityName&gt;Mesero&lt;/LocalityName&gt;&lt;Thoroughfare&gt;&lt;ThoroughfareName&gt;8 Via Sandro Pertini&lt;/ThoroughfareName&gt;&lt;/Thoroughfare&gt;&lt;PostalCode&gt;&lt;PostalCodeNumber&gt;20010&lt;/PostalCodeNumber&gt;&lt;/PostalCode&gt;&lt;/Locality&gt;&lt;/SubAdministrativeArea&gt;&lt;/AdministrativeArea&gt;&lt;/Country&gt;&lt;/AddressDetails&gt;\n    &lt;Point&gt;&lt;coordinates&gt;8.8527131,45.4966243,0&lt;/coordinates&gt;&lt;/Point&gt;\n  &lt;/Placemark&gt;\n  &lt;Placemark id='p2'&gt;\n    &lt;address&gt;Via Sandro Pertini, 20010 Ossona MI, Italy&lt;/address&gt;\n    &lt;AddressDetails Accuracy='6' xmlns='urn:oasis:names:tc:ciq:xsdschema:xAL:2.0'&gt;&lt;Country&gt;&lt;CountryNameCode&gt;IT&lt;/CountryNameCode&gt;&lt;CountryName&gt;Italy&lt;/CountryName&gt;&lt;AdministrativeArea&gt;&lt;AdministrativeAreaName&gt;Lombardy&lt;/AdministrativeAreaName&gt;&lt;SubAdministrativeArea&gt;&lt;SubAdministrativeAreaName&gt;Milan&lt;/SubAdministrativeAreaName&gt;&lt;Locality&gt;&lt;LocalityName&gt;Ossona&lt;/LocalityName&gt;&lt;Thoroughfare&gt;&lt;ThoroughfareName&gt;Via Sandro Pertini&lt;/ThoroughfareName&gt;&lt;/Thoroughfare&gt;&lt;PostalCode&gt;&lt;PostalCodeNumber&gt;20010&lt;/PostalCodeNumber&gt;&lt;/PostalCode&gt;&lt;/Locality&gt;&lt;/SubAdministrativeArea&gt;&lt;/AdministrativeArea&gt;&lt;/Country&gt;&lt;/AddressDetails&gt;\n    &lt;Point&gt;&lt;coordinates&gt;8.9023200,45.5074444,0&lt;/coordinates&gt;&lt;/Point&gt;\n  &lt;/Placemark&gt;\n&lt;/Response&gt;&lt;/kml&gt;\n&quot;
   
+  GOOGLE_TOO_MANY=&lt;&lt;-EOF.strip
+  &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;kml xmlns=&quot;http://earth.google.com/kml/2.0&quot;&gt;&lt;Response&gt;&lt;name&gt;100 spear st, san francisco, ca&lt;/name&gt;&lt;Status&gt;&lt;code&gt;620&lt;/code&gt;&lt;request&gt;geocode&lt;/request&gt;&lt;/Status&gt;&lt;/Response&gt;&lt;/kml&gt;
+  EOF
+  
   def setup
     super
     @google_full_hash = {:street_address=&gt;&quot;100 Spear St&quot;, :city=&gt;&quot;San Francisco&quot;, :state=&gt;&quot;CA&quot;, :zip=&gt;&quot;94105&quot;, :country_code=&gt;&quot;US&quot;}
@@ -131,4 +135,14 @@ class GoogleGeocoderTest &lt; BaseGeocoderTest #:nodoc: all
     assert_equal &quot;Via Sandro Pertini&quot;, res.street_address
     assert_equal &quot;google&quot;, res.provider
   end
+  
+  def test_too_many_queries
+    response = MockSuccess.new
+    response.expects(:body).returns(GOOGLE_TOO_MANY)
+    url = &quot;http://maps.google.com/maps/geo?q=#{Geokit::Inflector.url_escape(@address)}&amp;output=xml&amp;key=Google&amp;oe=utf-8&quot;
+    Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
+    assert_raise &quot;&quot; do
+      res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
+    end
+  end
 end</diff>
      <filename>test/test_google_geocoder.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4d7fc53507a52eedb81c1e29ac56dfb8614d10a7</id>
    </parent>
  </parents>
  <author>
    <name>Sebastien Grosjean</name>
    <email>public@zencocoon.com</email>
  </author>
  <url>http://github.com/ZenCocoon/geokit-gem/commit/96f897bf2a6b6be9fe7cc60934b94fca5e6eff24</url>
  <id>96f897bf2a6b6be9fe7cc60934b94fca5e6eff24</id>
  <committed-date>2009-05-19T10:05:32-07:00</committed-date>
  <authored-date>2009-05-19T10:05:32-07:00</authored-date>
  <message>Prevent GoogleGeocoder from doing to much queries</message>
  <tree>dc3ef03b30dbe4f0679c84ef9295c7195ef8dedc</tree>
  <committer>
    <name>Sebastien Grosjean</name>
    <email>public@zencocoon.com</email>
  </committer>
</commit>
