Skip to content
Snippets Groups Projects
Commit 05480023 authored by Yong Gu's avatar Yong Gu
Browse files

Improve Baidu and BaiduIp lookup by fixing error and cover test.

parent 9c9a8ea0
No related branches found
No related tags found
No related merge requests found
......@@ -24,19 +24,19 @@ module Geocoder::Lookup
when 0
return [doc['result']] unless doc['result'].blank?
when 1, 3, 4
raise_error(Geocoder::Error, messages) ||
raise_error(Geocoder::Error, "server error.") ||
warn("Baidu Geocoding API error: server error.")
when 2
raise_error(Geocoder::InvalidRequest, messages) ||
raise_error(Geocoder::InvalidRequest, "invalid request.") ||
warn("Baidu Geocoding API error: invalid request.")
when 5
raise_error(Geocoder::InvalidApiKey, messages) ||
raise_error(Geocoder::InvalidApiKey, "invalid api key") ||
warn("Baidu Geocoding API error: invalid api key.")
when 101, 102, 200..299
raise_error(Geocoder::RequestDenied) ||
raise_error(Geocoder::RequestDenied, "request denied") ||
warn("Baidu Geocoding API error: request denied.")
when 300..399
raise_error(Geocoder::OverQueryLimitError) ||
raise_error(Geocoder::OverQueryLimitError, "over query limit.") ||
warn("Baidu Geocoding API error: over query limit.")
end
return []
......
......@@ -24,19 +24,19 @@ module Geocoder::Lookup
when 0
return [doc['content']] unless doc['content'].blank?
when 1, 3, 4
raise_error(Geocoder::Error, messages) ||
raise_error(Geocoder::Error, "server error.") ||
warn("Baidu IP Geocoding API error: server error.")
when 2
raise_error(Geocoder::InvalidRequest, messages) ||
raise_error(Geocoder::InvalidRequest, "invalid request.") ||
warn("Baidu IP Geocoding API error: invalid request.")
when 5
raise_error(Geocoder::InvalidApiKey, messages) ||
raise_error(Geocoder::InvalidApiKey, "invalid api key.") ||
warn("Baidu IP Geocoding API error: invalid api key.")
when 101, 102, 200..299
raise_error(Geocoder::RequestDenied) ||
raise_error(Geocoder::RequestDenied, "request denied.") ||
warn("Baidu IP Geocoding API error: request denied.")
when 300..399
raise_error(Geocoder::OverQueryLimitError) ||
raise_error(Geocoder::OverQueryLimitError, "over query limit") ||
warn("Baidu IP Geocoding API error: over query limit.")
end
return []
......
......@@ -58,7 +58,7 @@ class LookupTest < Test::Unit::TestCase
def test_raises_exception_on_invalid_key
Geocoder.configure(:always_raise => [Geocoder::InvalidApiKey])
#Geocoder::Lookup.all_services_except_test.each do |l|
[:bing, :yahoo, :yandex, :maxmind].each do |l|
[:bing, :yahoo, :yandex, :maxmind, :baidu, :baidu_ip].each do |l|
lookup = Geocoder::Lookup.get(l)
assert_raises Geocoder::InvalidApiKey do
lookup.send(:results, Geocoder::Query.new("invalid key"))
......@@ -70,7 +70,7 @@ class LookupTest < Test::Unit::TestCase
# keep test output clean: suppress timeout warning
orig = $VERBOSE; $VERBOSE = nil
#Geocoder::Lookup.all_services_except_test.each do |l|
[:bing, :yahoo, :yandex, :maxmind, :cloudmade].each do |l|
[:bing, :yahoo, :yandex, :maxmind, :cloudmade, :baidu, :baidu_ip].each do |l|
Geocoder.configure(:lookup => l)
set_api_key!(l)
assert_equal [], Geocoder.search("invalid key")
......@@ -91,6 +91,18 @@ class LookupTest < Test::Unit::TestCase
assert_equal "a=1&b=2", g.send(:hash_to_query, {:a => 1, :b => 2})
end
def test_baidu_api_key
Geocoder.configure(:api_key => "MY_KEY")
g = Geocoder::Lookup::BaiduIp.new
assert_match "ak=MY_KEY", g.query_url(Geocoder::Query.new("232.65.123.94"))
end
def test_baidu_ip_api_key
Geocoder.configure(:api_key => "MY_KEY")
g = Geocoder::Lookup::Baidu.new
assert_match "ak=MY_KEY", g.query_url(Geocoder::Query.new("Madison Square Garden, New York, NY 10001, United States"))
end
def test_google_api_key
Geocoder.configure(:api_key => "MY_KEY")
g = Geocoder::Lookup::Google.new
......@@ -104,9 +116,11 @@ class LookupTest < Test::Unit::TestCase
end
def test_raises_configuration_error_on_missing_key
assert_raises Geocoder::ConfigurationError do
Geocoder.configure(:lookup => :bing, :api_key => nil)
Geocoder.search("Madison Square Garden, New York, NY 10001, United States")
[:bing, :baidu].each do |l|
assert_raises Geocoder::ConfigurationError do
Geocoder.configure(:lookup => l, :api_key => nil)
Geocoder.search("Madison Square Garden, New York, NY 10001, United States")
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment