Skip to content
Snippets Groups Projects
Commit fecc20dd authored by Alex Reisner's avatar Alex Reisner
Browse files

Merge pull request #585 from yonggu/baidu_lookup_improvement

Improve Baidu and BaiduIp lookup by fixing error and cover test.
parents 9c9a8ea0 05480023
No related branches found
No related tags found
No related merge requests found
...@@ -24,19 +24,19 @@ module Geocoder::Lookup ...@@ -24,19 +24,19 @@ module Geocoder::Lookup
when 0 when 0
return [doc['result']] unless doc['result'].blank? return [doc['result']] unless doc['result'].blank?
when 1, 3, 4 when 1, 3, 4
raise_error(Geocoder::Error, messages) || raise_error(Geocoder::Error, "server error.") ||
warn("Baidu Geocoding API error: server error.") warn("Baidu Geocoding API error: server error.")
when 2 when 2
raise_error(Geocoder::InvalidRequest, messages) || raise_error(Geocoder::InvalidRequest, "invalid request.") ||
warn("Baidu Geocoding API error: invalid request.") warn("Baidu Geocoding API error: invalid request.")
when 5 when 5
raise_error(Geocoder::InvalidApiKey, messages) || raise_error(Geocoder::InvalidApiKey, "invalid api key") ||
warn("Baidu Geocoding API error: invalid api key.") warn("Baidu Geocoding API error: invalid api key.")
when 101, 102, 200..299 when 101, 102, 200..299
raise_error(Geocoder::RequestDenied) || raise_error(Geocoder::RequestDenied, "request denied") ||
warn("Baidu Geocoding API error: request denied.") warn("Baidu Geocoding API error: request denied.")
when 300..399 when 300..399
raise_error(Geocoder::OverQueryLimitError) || raise_error(Geocoder::OverQueryLimitError, "over query limit.") ||
warn("Baidu Geocoding API error: over query limit.") warn("Baidu Geocoding API error: over query limit.")
end end
return [] return []
......
...@@ -24,19 +24,19 @@ module Geocoder::Lookup ...@@ -24,19 +24,19 @@ module Geocoder::Lookup
when 0 when 0
return [doc['content']] unless doc['content'].blank? return [doc['content']] unless doc['content'].blank?
when 1, 3, 4 when 1, 3, 4
raise_error(Geocoder::Error, messages) || raise_error(Geocoder::Error, "server error.") ||
warn("Baidu IP Geocoding API error: server error.") warn("Baidu IP Geocoding API error: server error.")
when 2 when 2
raise_error(Geocoder::InvalidRequest, messages) || raise_error(Geocoder::InvalidRequest, "invalid request.") ||
warn("Baidu IP Geocoding API error: invalid request.") warn("Baidu IP Geocoding API error: invalid request.")
when 5 when 5
raise_error(Geocoder::InvalidApiKey, messages) || raise_error(Geocoder::InvalidApiKey, "invalid api key.") ||
warn("Baidu IP Geocoding API error: invalid api key.") warn("Baidu IP Geocoding API error: invalid api key.")
when 101, 102, 200..299 when 101, 102, 200..299
raise_error(Geocoder::RequestDenied) || raise_error(Geocoder::RequestDenied, "request denied.") ||
warn("Baidu IP Geocoding API error: request denied.") warn("Baidu IP Geocoding API error: request denied.")
when 300..399 when 300..399
raise_error(Geocoder::OverQueryLimitError) || raise_error(Geocoder::OverQueryLimitError, "over query limit") ||
warn("Baidu IP Geocoding API error: over query limit.") warn("Baidu IP Geocoding API error: over query limit.")
end end
return [] return []
......
...@@ -58,7 +58,7 @@ class LookupTest < Test::Unit::TestCase ...@@ -58,7 +58,7 @@ class LookupTest < Test::Unit::TestCase
def test_raises_exception_on_invalid_key def test_raises_exception_on_invalid_key
Geocoder.configure(:always_raise => [Geocoder::InvalidApiKey]) Geocoder.configure(:always_raise => [Geocoder::InvalidApiKey])
#Geocoder::Lookup.all_services_except_test.each do |l| #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) lookup = Geocoder::Lookup.get(l)
assert_raises Geocoder::InvalidApiKey do assert_raises Geocoder::InvalidApiKey do
lookup.send(:results, Geocoder::Query.new("invalid key")) lookup.send(:results, Geocoder::Query.new("invalid key"))
...@@ -70,7 +70,7 @@ class LookupTest < Test::Unit::TestCase ...@@ -70,7 +70,7 @@ class LookupTest < Test::Unit::TestCase
# keep test output clean: suppress timeout warning # keep test output clean: suppress timeout warning
orig = $VERBOSE; $VERBOSE = nil orig = $VERBOSE; $VERBOSE = nil
#Geocoder::Lookup.all_services_except_test.each do |l| #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) Geocoder.configure(:lookup => l)
set_api_key!(l) set_api_key!(l)
assert_equal [], Geocoder.search("invalid key") assert_equal [], Geocoder.search("invalid key")
...@@ -91,6 +91,18 @@ class LookupTest < Test::Unit::TestCase ...@@ -91,6 +91,18 @@ class LookupTest < Test::Unit::TestCase
assert_equal "a=1&b=2", g.send(:hash_to_query, {:a => 1, :b => 2}) assert_equal "a=1&b=2", g.send(:hash_to_query, {:a => 1, :b => 2})
end 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 def test_google_api_key
Geocoder.configure(:api_key => "MY_KEY") Geocoder.configure(:api_key => "MY_KEY")
g = Geocoder::Lookup::Google.new g = Geocoder::Lookup::Google.new
...@@ -104,9 +116,11 @@ class LookupTest < Test::Unit::TestCase ...@@ -104,9 +116,11 @@ class LookupTest < Test::Unit::TestCase
end end
def test_raises_configuration_error_on_missing_key def test_raises_configuration_error_on_missing_key
assert_raises Geocoder::ConfigurationError do [:bing, :baidu].each do |l|
Geocoder.configure(:lookup => :bing, :api_key => nil) assert_raises Geocoder::ConfigurationError do
Geocoder.search("Madison Square Garden, New York, NY 10001, United States") Geocoder.configure(:lookup => l, :api_key => nil)
Geocoder.search("Madison Square Garden, New York, NY 10001, United States")
end
end 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