diff --git a/lib/geocoder/lookups/baidu.rb b/lib/geocoder/lookups/baidu.rb index 4bd80f21c30e4ffab441822e69e4aa038a2472d5..51b74620155328c4c61054aa0a70c9aafdccdb6b 100644 --- a/lib/geocoder/lookups/baidu.rb +++ b/lib/geocoder/lookups/baidu.rb @@ -21,7 +21,7 @@ module Geocoder::Lookup def results(query, reverse = false) return [] unless doc = fetch_data(query) case doc['status']; when 0 - return [doc['result']] + return [doc['result']] unless doc['result'].blank? when 1, 3, 4 raise_error(Geocoder::Error, messages) || warn("Baidu Geocoding API error: server error.") @@ -46,7 +46,7 @@ module Geocoder::Lookup (query.reverse_geocode? ? :location : :address) => query.sanitized_text, :ak => configuration.api_key, :output => "json" - } + }.merge(super) end end diff --git a/lib/geocoder/results/baidu.rb b/lib/geocoder/results/baidu.rb index 27adbde1ccbd2460065a22e5ad6735290643a6f8..62fbc6f1d6d6920cbd162ed015098e20c0250d37 100644 --- a/lib/geocoder/results/baidu.rb +++ b/lib/geocoder/results/baidu.rb @@ -43,6 +43,22 @@ module Geocoder::Result @data['addressComponent'] end + def state_code + "" + end + + def postal_code + "" + end + + def country + "China" + end + + def country_code + "CN" + end + ## # Get address components of a given type. Valid types are defined in # Baidu's Geocoding API documentation and include (among others): diff --git a/test/fixtures/baidu_invalid_key b/test/fixtures/baidu_invalid_key new file mode 100644 index 0000000000000000000000000000000000000000..9e70656817e05f28418a2d715415213f51d5002e --- /dev/null +++ b/test/fixtures/baidu_invalid_key @@ -0,0 +1 @@ +{"results":[],"status":5,"msg":"AK Illegal or Not Exist:"} diff --git a/test/fixtures/baidu_no_results b/test/fixtures/baidu_no_results new file mode 100644 index 0000000000000000000000000000000000000000..1ab1ab3f79d3e40f8dbbb1f6d7a401fb56d58193 --- /dev/null +++ b/test/fixtures/baidu_no_results @@ -0,0 +1 @@ +{"status":0,"result":[]} diff --git a/test/fixtures/baidu_reverse b/test/fixtures/baidu_reverse new file mode 100644 index 0000000000000000000000000000000000000000..bf6dcf0c036d9a6ecb608fb545d4baad310cf0fe --- /dev/null +++ b/test/fixtures/baidu_reverse @@ -0,0 +1 @@ +{"status":0,"result":{"location":{"lng":121.48789948569,"lat":31.249161555654},"formatted_address":"上海市闸北区天潼路619å·","business":"七浦路,æµ·å®è·¯,北京东路","addressComponent":{"city":"上海市","district":"闸北区","province":"上海市","street":"天潼路","street_number":"619å·"},"cityCode":289}} diff --git a/test/fixtures/baidu_shanghai_pearl_tower b/test/fixtures/baidu_shanghai_pearl_tower new file mode 100644 index 0000000000000000000000000000000000000000..f5619fe20c8f632efaea75c68ebccea606042905 --- /dev/null +++ b/test/fixtures/baidu_shanghai_pearl_tower @@ -0,0 +1,12 @@ +{ + "status":0, + "result":{ + "location":{ + "lng":116.30814954222, + "lat":40.056885091681 + }, + "precise":1, + "confidence":80, + "level":"\u5546\u52a1\u5927\u53a6" + } +} diff --git a/test/test_helper.rb b/test/test_helper.rb index 24ca32c77fd49d49ec9c1aa75299ab2d1c975746..06e3272f94d2d646d565ebcc744d0ced3ed243b9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -147,6 +147,15 @@ module Geocoder end end + class Baidu + private + def fixture_prefix + "baidu" + end + def default_fixture_filename + "baidu_shanghai_pearl_tower" + end + end end end