From 05480023c368ff30f2a61adfab9596a0bb4c8ef9 Mon Sep 17 00:00:00 2001 From: Yong Gu <zerogy921@gmail.com> Date: Fri, 24 Jan 2014 13:42:16 +0800 Subject: [PATCH] Improve Baidu and BaiduIp lookup by fixing error and cover test. --- lib/geocoder/lookups/baidu.rb | 10 +++++----- lib/geocoder/lookups/baidu_ip.rb | 10 +++++----- test/lookup_test.rb | 24 +++++++++++++++++++----- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/geocoder/lookups/baidu.rb b/lib/geocoder/lookups/baidu.rb index 90521f3b..71e26890 100644 --- a/lib/geocoder/lookups/baidu.rb +++ b/lib/geocoder/lookups/baidu.rb @@ -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 [] diff --git a/lib/geocoder/lookups/baidu_ip.rb b/lib/geocoder/lookups/baidu_ip.rb index 548d26b8..f72c98c7 100644 --- a/lib/geocoder/lookups/baidu_ip.rb +++ b/lib/geocoder/lookups/baidu_ip.rb @@ -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 [] diff --git a/test/lookup_test.rb b/test/lookup_test.rb index c52a2154..cd8c412e 100644 --- a/test/lookup_test.rb +++ b/test/lookup_test.rb @@ -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 -- GitLab