geocoder 1.2.7 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of geocoder might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/README.md +31 -28
- data/examples/reverse_geocode_job.rb +40 -0
- data/lib/geocoder.rb +1 -0
- data/lib/geocoder/configuration.rb +5 -1
- data/lib/geocoder/exceptions.rb +3 -0
- data/lib/geocoder/ip_address.rb +2 -10
- data/lib/geocoder/logger.rb +55 -0
- data/lib/geocoder/lookup.rb +2 -1
- data/lib/geocoder/lookups/baidu.rb +5 -5
- data/lib/geocoder/lookups/baidu_ip.rb +5 -5
- data/lib/geocoder/lookups/base.rb +21 -16
- data/lib/geocoder/lookups/bing.rb +15 -2
- data/lib/geocoder/lookups/esri.rb +1 -1
- data/lib/geocoder/lookups/geocoder_ca.rb +1 -2
- data/lib/geocoder/lookups/geocodio.rb +3 -3
- data/lib/geocoder/lookups/google.rb +3 -3
- data/lib/geocoder/lookups/google_places_details.rb +3 -3
- data/lib/geocoder/lookups/mapquest.rb +3 -3
- data/lib/geocoder/lookups/maxmind.rb +1 -1
- data/lib/geocoder/lookups/maxmind_geoip2.rb +69 -0
- data/lib/geocoder/lookups/nominatim.rb +1 -1
- data/lib/geocoder/lookups/opencagedata.rb +4 -4
- data/lib/geocoder/lookups/pointpin.rb +4 -4
- data/lib/geocoder/lookups/postcode_anywhere_uk.rb +3 -3
- data/lib/geocoder/lookups/yahoo.rb +3 -3
- data/lib/geocoder/lookups/yandex.rb +3 -3
- data/lib/geocoder/query.rb +1 -1
- data/lib/geocoder/request.rb +70 -12
- data/lib/geocoder/results/geoip2.rb +8 -14
- data/lib/geocoder/results/maxmind_geoip2.rb +9 -0
- data/lib/geocoder/results/yandex.rb +5 -5
- data/lib/geocoder/version.rb +1 -1
- metadata +6 -147
- data/.gitignore +0 -6
- data/.travis.yml +0 -32
- data/Rakefile +0 -25
- data/examples/sidekiq_worker.rb +0 -16
- data/gemfiles/Gemfile.mongoid-2.4.x +0 -16
- data/test/fixtures/baidu_invalid_key +0 -1
- data/test/fixtures/baidu_ip_202_198_16_3 +0 -19
- data/test/fixtures/baidu_ip_invalid_key +0 -1
- data/test/fixtures/baidu_ip_no_results +0 -1
- data/test/fixtures/baidu_no_results +0 -1
- data/test/fixtures/baidu_reverse +0 -1
- data/test/fixtures/baidu_shanghai_pearl_tower +0 -12
- data/test/fixtures/bing_invalid_key +0 -1
- data/test/fixtures/bing_madison_square_garden +0 -40
- data/test/fixtures/bing_no_results +0 -16
- data/test/fixtures/bing_reverse +0 -42
- data/test/fixtures/cloudmade_invalid_key +0 -1
- data/test/fixtures/cloudmade_madison_square_garden +0 -1
- data/test/fixtures/cloudmade_no_results +0 -1
- data/test/fixtures/esri_madison_square_garden +0 -59
- data/test/fixtures/esri_no_results +0 -8
- data/test/fixtures/esri_reverse +0 -21
- data/test/fixtures/freegeoip_74_200_247_59 +0 -12
- data/test/fixtures/freegeoip_no_results +0 -1
- data/test/fixtures/geocoder_ca_madison_square_garden +0 -1
- data/test/fixtures/geocoder_ca_no_results +0 -1
- data/test/fixtures/geocoder_ca_reverse +0 -34
- data/test/fixtures/geocoder_us_madison_square_garden +0 -1
- data/test/fixtures/geocoder_us_no_results +0 -1
- data/test/fixtures/geocodio_1101_pennsylvania_ave +0 -1
- data/test/fixtures/geocodio_bad_api_key +0 -3
- data/test/fixtures/geocodio_invalid +0 -4
- data/test/fixtures/geocodio_no_results +0 -1
- data/test/fixtures/geocodio_over_query_limit +0 -4
- data/test/fixtures/google_garbage +0 -456
- data/test/fixtures/google_madison_square_garden +0 -57
- data/test/fixtures/google_no_city_data +0 -44
- data/test/fixtures/google_no_locality +0 -51
- data/test/fixtures/google_no_results +0 -4
- data/test/fixtures/google_over_limit +0 -4
- data/test/fixtures/google_places_details_invalid_request +0 -4
- data/test/fixtures/google_places_details_madison_square_garden +0 -120
- data/test/fixtures/google_places_details_no_results +0 -4
- data/test/fixtures/google_places_details_no_reviews +0 -60
- data/test/fixtures/google_places_details_no_types +0 -66
- data/test/fixtures/here_madison_square_garden +0 -72
- data/test/fixtures/here_no_results +0 -8
- data/test/fixtures/mapquest_error +0 -16
- data/test/fixtures/mapquest_invalid_api_key +0 -16
- data/test/fixtures/mapquest_invalid_request +0 -16
- data/test/fixtures/mapquest_madison_square_garden +0 -52
- data/test/fixtures/mapquest_no_results +0 -16
- data/test/fixtures/maxmind_24_24_24_21 +0 -1
- data/test/fixtures/maxmind_24_24_24_22 +0 -1
- data/test/fixtures/maxmind_24_24_24_23 +0 -1
- data/test/fixtures/maxmind_24_24_24_24 +0 -1
- data/test/fixtures/maxmind_74_200_247_59 +0 -1
- data/test/fixtures/maxmind_invalid_key +0 -1
- data/test/fixtures/maxmind_no_results +0 -1
- data/test/fixtures/nominatim_madison_square_garden +0 -150
- data/test/fixtures/nominatim_no_results +0 -1
- data/test/fixtures/nominatim_over_limit +0 -1
- data/test/fixtures/okf_kirstinmaki +0 -67
- data/test/fixtures/okf_no_results +0 -4
- data/test/fixtures/opencagedata_invalid_api_key +0 -25
- data/test/fixtures/opencagedata_invalid_request +0 -26
- data/test/fixtures/opencagedata_madison_square_garden +0 -73
- data/test/fixtures/opencagedata_no_results +0 -29
- data/test/fixtures/opencagedata_over_limit +0 -31
- data/test/fixtures/ovi_madison_square_garden +0 -72
- data/test/fixtures/ovi_no_results +0 -8
- data/test/fixtures/pointpin_10_10_10_10 +0 -1
- data/test/fixtures/pointpin_555_555_555_555 +0 -1
- data/test/fixtures/pointpin_80_111_555_555 +0 -1
- data/test/fixtures/pointpin_no_results +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_WR26NJ +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_generic_error +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_hampshire +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_key_limit_exceeded +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_no_results +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_romsey +0 -1
- data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_unknown_key +0 -1
- data/test/fixtures/smarty_streets_11211 +0 -1
- data/test/fixtures/smarty_streets_madison_square_garden +0 -47
- data/test/fixtures/smarty_streets_no_results +0 -1
- data/test/fixtures/telize_10_10_10_10 +0 -1
- data/test/fixtures/telize_555_555_555_555 +0 -4
- data/test/fixtures/telize_74_200_247_59 +0 -1
- data/test/fixtures/telize_no_results +0 -1
- data/test/fixtures/yahoo_error +0 -1
- data/test/fixtures/yahoo_invalid_key +0 -2
- data/test/fixtures/yahoo_madison_square_garden +0 -52
- data/test/fixtures/yahoo_no_results +0 -10
- data/test/fixtures/yahoo_over_limit +0 -2
- data/test/fixtures/yandex_canada_rue_dupuis_14 +0 -446
- data/test/fixtures/yandex_invalid_key +0 -1
- data/test/fixtures/yandex_kremlin +0 -48
- data/test/fixtures/yandex_new_york +0 -1
- data/test/fixtures/yandex_no_administrative_area +0 -53
- data/test/fixtures/yandex_no_city_and_town +0 -112
- data/test/fixtures/yandex_no_results +0 -16
- data/test/integration/http_client_test.rb +0 -31
- data/test/mongoid_test_helper.rb +0 -43
- data/test/test_helper.rb +0 -423
- data/test/unit/active_record_test.rb +0 -16
- data/test/unit/cache_test.rb +0 -37
- data/test/unit/calculations_test.rb +0 -220
- data/test/unit/configuration_test.rb +0 -55
- data/test/unit/error_handling_test.rb +0 -79
- data/test/unit/geocoder_test.rb +0 -78
- data/test/unit/https_test.rb +0 -17
- data/test/unit/ip_address_test.rb +0 -27
- data/test/unit/lookup_test.rb +0 -153
- data/test/unit/lookups/bing_test.rb +0 -68
- data/test/unit/lookups/dstk_test.rb +0 -26
- data/test/unit/lookups/esri_test.rb +0 -48
- data/test/unit/lookups/freegeoip_test.rb +0 -27
- data/test/unit/lookups/geocoder_ca_test.rb +0 -17
- data/test/unit/lookups/geocodio_test.rb +0 -56
- data/test/unit/lookups/geoip2_test.rb +0 -27
- data/test/unit/lookups/google_places_details_test.rb +0 -122
- data/test/unit/lookups/google_premier_test.rb +0 -22
- data/test/unit/lookups/google_test.rb +0 -84
- data/test/unit/lookups/mapquest_test.rb +0 -60
- data/test/unit/lookups/maxmind_local_test.rb +0 -28
- data/test/unit/lookups/maxmind_test.rb +0 -63
- data/test/unit/lookups/nominatim_test.rb +0 -31
- data/test/unit/lookups/okf_test.rb +0 -38
- data/test/unit/lookups/opencagedata_test.rb +0 -64
- data/test/unit/lookups/pointpin_test.rb +0 -30
- data/test/unit/lookups/postcode_anywhere_uk_test.rb +0 -70
- data/test/unit/lookups/smarty_streets_test.rb +0 -71
- data/test/unit/lookups/telize_test.rb +0 -36
- data/test/unit/lookups/yahoo_test.rb +0 -35
- data/test/unit/method_aliases_test.rb +0 -26
- data/test/unit/model_test.rb +0 -38
- data/test/unit/mongoid_test.rb +0 -47
- data/test/unit/near_test.rb +0 -87
- data/test/unit/oauth_util_test.rb +0 -31
- data/test/unit/proxy_test.rb +0 -37
- data/test/unit/query_test.rb +0 -52
- data/test/unit/rake_task_test.rb +0 -21
- data/test/unit/request_test.rb +0 -35
- data/test/unit/result_test.rb +0 -81
- data/test/unit/test_mode_test.rb +0 -70
@@ -1 +0,0 @@
|
|
1
|
-
{"error":{"status":401,"message":"invalid key"}}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"response": {
|
3
|
-
"GeoObjectCollection": {
|
4
|
-
"metaDataProperty": {
|
5
|
-
"GeocoderResponseMetaData": {
|
6
|
-
"request": "Кремль, Moscow, Russia",
|
7
|
-
"found": "1",
|
8
|
-
"results": "10"
|
9
|
-
}
|
10
|
-
},
|
11
|
-
"featureMember": [
|
12
|
-
{
|
13
|
-
"GeoObject": {
|
14
|
-
"metaDataProperty": {
|
15
|
-
"GeocoderMetaData": {
|
16
|
-
"kind": "vegetation",
|
17
|
-
"text": "Россия, Москва, Московский Кремль",
|
18
|
-
"precision": "other",
|
19
|
-
"AddressDetails": {
|
20
|
-
"Country": {
|
21
|
-
"CountryNameCode": "RU",
|
22
|
-
"CountryName": "Россия",
|
23
|
-
"Locality": {
|
24
|
-
"LocalityName": "Москва",
|
25
|
-
"Premise": {
|
26
|
-
"PremiseName": "Московский Кремль"
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
}
|
31
|
-
}
|
32
|
-
},
|
33
|
-
"name": "Московский Кремль",
|
34
|
-
"boundedBy": {
|
35
|
-
"Envelope": {
|
36
|
-
"lowerCorner": "37.584182 55.733361",
|
37
|
-
"upperCorner": "37.650064 55.770517"
|
38
|
-
}
|
39
|
-
},
|
40
|
-
"Point": {
|
41
|
-
"pos": "37.617123 55.751943"
|
42
|
-
}
|
43
|
-
}
|
44
|
-
}
|
45
|
-
]
|
46
|
-
}
|
47
|
-
}
|
48
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"response":{"Attribution":"","GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"New York, NY","found":"21","results":"10"}},"featureMember":[{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"province","text":"United States, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"New York"}}}}},"description":"United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-79.762115 40.477414","upperCorner":"-71.668635 45.016078"}},"Point":{"pos":"-74.007112 40.714545"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, New York, Bronx, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"New York, Bronx, New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"New York","SubAdministrativeArea":{"SubAdministrativeAreaName":"Bronx","Locality":{"LocalityName":"New York"}}}}}}},"description":"Bronx, New York, United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-74.258892 40.477414","upperCorner":"-73.700373 40.917616"}},"Point":{"pos":"-74.007112 40.714545"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"hydro","text":"United States, Upper New York Bay","precision":"other","AddressDetails":{"Country":{"AddressLine":"Upper New York Bay","CountryNameCode":"US","CountryName":"United States","Locality":{"Premise":{"PremiseName":"Upper New York Bay"}}}}}},"description":"United States","name":"Upper New York Bay","boundedBy":{"Envelope":{"lowerCorner":"-74.107633 40.604124","upperCorner":"-73.998434 40.706697"}},"Point":{"pos":"-74.048758 40.660893"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, New Jersey, Hudson, West New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"New Jersey, Hudson, West New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"New Jersey","SubAdministrativeArea":{"SubAdministrativeAreaName":"Hudson","Locality":{"LocalityName":"West New York"}}}}}}},"description":"Hudson, New Jersey, United States","name":"West New York","boundedBy":{"Envelope":{"lowerCorner":"-74.023569 40.7746","upperCorner":"-73.992936 40.796565"}},"Point":{"pos":"-74.015260 40.788325"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United Kingdom of Great Britain and Northern Ireland, England, Lincolnshire, East Lindsey, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"England, Lincolnshire, East Lindsey, New York","CountryNameCode":"GB","CountryName":"United Kingdom of Great Britain and Northern Ireland","AdministrativeArea":{"AdministrativeAreaName":"England","SubAdministrativeArea":{"SubAdministrativeAreaName":"Lincolnshire","Locality":{"LocalityName":"New York"}}}}}}},"description":"East Lindsey, Lincolnshire, England, United Kingdom of Great Britain and Northern Ireland","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-0.205993 53.039103","upperCorner":"-0.074192 53.11847"}},"Point":{"pos":"-0.140092 53.078805"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"South Africa, North West, Bophirima, Naledi, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"North West, Bophirima, Naledi, New York","CountryNameCode":"ZA","CountryName":"South Africa","AdministrativeArea":{"AdministrativeAreaName":"North West","SubAdministrativeArea":{"SubAdministrativeAreaName":"Bophirima","Locality":{"LocalityName":"New York"}}}}}}},"description":"Naledi, Bophirima, North West, South Africa","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"24.454037 -26.943742","upperCorner":"24.585838 -26.825556"}},"Point":{"pos":"24.519938 -26.884665"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, New Mexico, Cibola, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"New Mexico, Cibola, New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"New Mexico","SubAdministrativeArea":{"SubAdministrativeAreaName":"Cibola","Locality":{"LocalityName":"New York"}}}}}}},"description":"Cibola, New Mexico, United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-107.592515 35.00522","upperCorner":"-107.460714 35.113594"}},"Point":{"pos":"-107.526615 35.059425"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, Iowa, Wayne, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"Iowa, Wayne, New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"Iowa","SubAdministrativeArea":{"SubAdministrativeAreaName":"Wayne","Locality":{"LocalityName":"New York"}}}}}}},"description":"Wayne, Iowa, United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-93.32337 40.801487","upperCorner":"-93.191569 40.901567"}},"Point":{"pos":"-93.257469 40.851546"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, Missouri, Caldwell, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"Missouri, Caldwell, New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"Missouri","SubAdministrativeArea":{"SubAdministrativeAreaName":"Caldwell","Locality":{"LocalityName":"New York"}}}}}}},"description":"Caldwell, Missouri, United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-93.97525 39.633979","upperCorner":"-93.843449 39.735813"}},"Point":{"pos":"-93.909350 39.684915"}}},{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"United States, Texas, Henderson, New York","precision":"other","AddressDetails":{"Country":{"AddressLine":"Texas, Henderson, New York","CountryNameCode":"US","CountryName":"United States","AdministrativeArea":{"AdministrativeAreaName":"Texas","SubAdministrativeArea":{"SubAdministrativeAreaName":"Henderson","Locality":{"LocalityName":"New York"}}}}}}},"description":"Henderson, Texas, United States","name":"New York","boundedBy":{"Envelope":{"lowerCorner":"-95.735086 32.112428","upperCorner":"-95.603285 32.224535"}},"Point":{"pos":"-95.669185 32.168499"}}}]}}}
|
@@ -1,53 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"response":{
|
3
|
-
"GeoObjectCollection":{
|
4
|
-
"metaDataProperty":{
|
5
|
-
"GeocoderResponseMetaData":{
|
6
|
-
"request":"13.813139,100.560291",
|
7
|
-
"found":"1",
|
8
|
-
"results":"1",
|
9
|
-
"Point":{
|
10
|
-
"pos":"13.813139 100.560291"
|
11
|
-
}
|
12
|
-
}
|
13
|
-
},
|
14
|
-
"featureMember":[
|
15
|
-
{
|
16
|
-
"GeoObject":{
|
17
|
-
"metaDataProperty":{
|
18
|
-
"GeocoderMetaData":{
|
19
|
-
"kind":"house",
|
20
|
-
"text":"Thailand, Phahon Yothin Road, 1130/5",
|
21
|
-
"precision":"exact",
|
22
|
-
"AddressDetails":{
|
23
|
-
"Country":{
|
24
|
-
"AddressLine":"Phahon Yothin Road, 1130/5",
|
25
|
-
"CountryNameCode":"TH",
|
26
|
-
"CountryName":"Thailand",
|
27
|
-
"Thoroughfare":{
|
28
|
-
"ThoroughfareName":"Phahon Yothin Road",
|
29
|
-
"Premise":{
|
30
|
-
"PremiseNumber":"1130/5"
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
},
|
37
|
-
"description":"Thailand",
|
38
|
-
"name":"Phahon Yothin Road, 1130/5",
|
39
|
-
"boundedBy":{
|
40
|
-
"Envelope":{
|
41
|
-
"lowerCorner":"100.552005 13.805102",
|
42
|
-
"upperCorner":"100.568462 13.821184"
|
43
|
-
}
|
44
|
-
},
|
45
|
-
"Point":{
|
46
|
-
"pos":"100.560234 13.813143"
|
47
|
-
}
|
48
|
-
}
|
49
|
-
}
|
50
|
-
]
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
@@ -1,112 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"response":{
|
3
|
-
"GeoObjectCollection":{
|
4
|
-
"metaDataProperty":{
|
5
|
-
"GeocoderResponseMetaData":{
|
6
|
-
"request":"57.423359,55.892596",
|
7
|
-
"found":"3",
|
8
|
-
"results":"10",
|
9
|
-
"Point":{
|
10
|
-
"pos":"57.423359 55.892596"
|
11
|
-
}
|
12
|
-
}
|
13
|
-
},
|
14
|
-
"featureMember":[
|
15
|
-
{
|
16
|
-
"GeoObject":{
|
17
|
-
"metaDataProperty":{
|
18
|
-
"GeocoderMetaData":{
|
19
|
-
"kind":"area",
|
20
|
-
"text":"Россия, республика Башкортостан, Караидельский район",
|
21
|
-
"precision":"other",
|
22
|
-
"AddressDetails":{
|
23
|
-
"Country":{
|
24
|
-
"AddressLine":"республика Башкортостан, Караидельский район",
|
25
|
-
"CountryNameCode":"RU",
|
26
|
-
"CountryName":"Россия",
|
27
|
-
"AdministrativeArea":{
|
28
|
-
"AdministrativeAreaName":"республика Башкортостан",
|
29
|
-
"SubAdministrativeArea":{
|
30
|
-
"SubAdministrativeAreaName":"Караидельский район"
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
},
|
37
|
-
"description":"республика Башкортостан, Россия",
|
38
|
-
"name":"Караидельский район",
|
39
|
-
"boundedBy":{
|
40
|
-
"Envelope":{
|
41
|
-
"lowerCorner":"56.231384 55.462814",
|
42
|
-
"upperCorner":"57.705348 56.076117"
|
43
|
-
}
|
44
|
-
},
|
45
|
-
"Point":{
|
46
|
-
"pos":"57.423359 55.892596"
|
47
|
-
}
|
48
|
-
}
|
49
|
-
},
|
50
|
-
{
|
51
|
-
"GeoObject":{
|
52
|
-
"metaDataProperty":{
|
53
|
-
"GeocoderMetaData":{
|
54
|
-
"kind":"province",
|
55
|
-
"text":"Россия, республика Башкортостан",
|
56
|
-
"precision":"other",
|
57
|
-
"AddressDetails":{
|
58
|
-
"Country":{
|
59
|
-
"AddressLine":"республика Башкортостан",
|
60
|
-
"CountryNameCode":"RU",
|
61
|
-
"CountryName":"Россия",
|
62
|
-
"AdministrativeArea":{
|
63
|
-
"AdministrativeAreaName":"республика Башкортостан"
|
64
|
-
}
|
65
|
-
}
|
66
|
-
}
|
67
|
-
}
|
68
|
-
},
|
69
|
-
"description":"Россия",
|
70
|
-
"name":"республика Башкортостан",
|
71
|
-
"boundedBy":{
|
72
|
-
"Envelope":{
|
73
|
-
"lowerCorner":"53.157475 51.571991",
|
74
|
-
"upperCorner":"60.001577 56.533651"
|
75
|
-
}
|
76
|
-
},
|
77
|
-
"Point":{
|
78
|
-
"pos":"56.579526 54.127354"
|
79
|
-
}
|
80
|
-
}
|
81
|
-
},
|
82
|
-
{
|
83
|
-
"GeoObject":{
|
84
|
-
"metaDataProperty":{
|
85
|
-
"GeocoderMetaData":{
|
86
|
-
"kind":"country",
|
87
|
-
"text":"Россия",
|
88
|
-
"precision":"other",
|
89
|
-
"AddressDetails":{
|
90
|
-
"Country":{
|
91
|
-
"CountryNameCode":"RU",
|
92
|
-
"CountryName":"Россия"
|
93
|
-
}
|
94
|
-
}
|
95
|
-
}
|
96
|
-
},
|
97
|
-
"name":"Россия",
|
98
|
-
"boundedBy":{
|
99
|
-
"Envelope":{
|
100
|
-
"lowerCorner":"19.641673 36.84312",
|
101
|
-
"upperCorner":"179.999997 81.848739"
|
102
|
-
}
|
103
|
-
},
|
104
|
-
"Point":{
|
105
|
-
"pos":"37.617761 55.755773"
|
106
|
-
}
|
107
|
-
}
|
108
|
-
}
|
109
|
-
]
|
110
|
-
}
|
111
|
-
}
|
112
|
-
}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
$: << File.join(File.dirname(__FILE__), "..", "..", "lib")
|
3
|
-
require 'pathname'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'test/unit'
|
6
|
-
require 'geocoder'
|
7
|
-
require 'yaml'
|
8
|
-
|
9
|
-
class HttpClientTest < Test::Unit::TestCase
|
10
|
-
def setup
|
11
|
-
@api_keys = YAML.load_file("api_keys.yml")
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_http_basic_auth
|
15
|
-
Geocoder.configure(lookup: :geocoder_us, api_key: @api_keys["geocoder_us"])
|
16
|
-
results = Geocoder.search "27701"
|
17
|
-
assert_not_nil results.first
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_ssl
|
21
|
-
Geocoder.configure(lookup: :esri, use_https: true)
|
22
|
-
results = Geocoder.search "27701"
|
23
|
-
assert_not_nil results.first
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_ssl_opt_out
|
27
|
-
Geocoder.configure(ip_lookup: :telize, use_https: true)
|
28
|
-
results = Geocoder.search "74.200.247.59"
|
29
|
-
assert_not_nil results.first
|
30
|
-
end
|
31
|
-
end
|
data/test/mongoid_test_helper.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'test_helper'
|
4
|
-
require 'mongoid'
|
5
|
-
require 'geocoder/models/mongoid'
|
6
|
-
|
7
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
8
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
|
-
|
10
|
-
if (::Mongoid::VERSION >= "3")
|
11
|
-
Mongoid.logger = Logger.new($stderr, :debug)
|
12
|
-
else
|
13
|
-
Mongoid.configure do |config|
|
14
|
-
config.logger = Logger.new($stderr, :debug)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
##
|
19
|
-
# Geocoded model.
|
20
|
-
#
|
21
|
-
class PlaceUsingMongoid
|
22
|
-
include Mongoid::Document
|
23
|
-
include Geocoder::Model::Mongoid
|
24
|
-
|
25
|
-
geocoded_by :address, :coordinates => :location
|
26
|
-
field :name
|
27
|
-
field :address
|
28
|
-
field :location, :type => Array
|
29
|
-
|
30
|
-
def initialize(name, address)
|
31
|
-
super()
|
32
|
-
write_attribute :name, name
|
33
|
-
write_attribute :address, address
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class PlaceUsingMongoidWithoutIndex
|
38
|
-
include Mongoid::Document
|
39
|
-
include Geocoder::Model::Mongoid
|
40
|
-
|
41
|
-
field :location, :type => Array
|
42
|
-
geocoded_by :location, :skip_index => true
|
43
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,423 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
-
|
7
|
-
class MysqlConnection
|
8
|
-
def adapter_name
|
9
|
-
"mysql"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
##
|
14
|
-
# Simulate enough of ActiveRecord::Base that objects can be used for testing.
|
15
|
-
#
|
16
|
-
module ActiveRecord
|
17
|
-
class Base
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@attributes = {}
|
21
|
-
end
|
22
|
-
|
23
|
-
def read_attribute(attr_name)
|
24
|
-
@attributes[attr_name.to_sym]
|
25
|
-
end
|
26
|
-
|
27
|
-
def write_attribute(attr_name, value)
|
28
|
-
@attributes[attr_name.to_sym] = value
|
29
|
-
end
|
30
|
-
|
31
|
-
def update_attribute(attr_name, value)
|
32
|
-
write_attribute(attr_name.to_sym, value)
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.scope(*args); end
|
36
|
-
|
37
|
-
def self.connection
|
38
|
-
MysqlConnection.new
|
39
|
-
end
|
40
|
-
|
41
|
-
def method_missing(name, *args, &block)
|
42
|
-
if name.to_s[-1..-1] == "="
|
43
|
-
write_attribute name.to_s[0...-1], *args
|
44
|
-
else
|
45
|
-
read_attribute name
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class << self
|
50
|
-
def table_name
|
51
|
-
'test_table_name'
|
52
|
-
end
|
53
|
-
|
54
|
-
def primary_key
|
55
|
-
:id
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# simulate Rails module so Railtie gets loaded
|
63
|
-
module Rails
|
64
|
-
end
|
65
|
-
|
66
|
-
# Require Geocoder after ActiveRecord simulator.
|
67
|
-
require 'geocoder'
|
68
|
-
require "geocoder/lookups/base"
|
69
|
-
|
70
|
-
# and initialize Railtie manually (since Rails::Railtie doesn't exist)
|
71
|
-
Geocoder::Railtie.insert
|
72
|
-
|
73
|
-
##
|
74
|
-
# Mock HTTP request to geocoding service.
|
75
|
-
#
|
76
|
-
module Geocoder
|
77
|
-
module Lookup
|
78
|
-
class Base
|
79
|
-
private
|
80
|
-
def fixture_exists?(filename)
|
81
|
-
File.exist?(File.join("test", "fixtures", filename))
|
82
|
-
end
|
83
|
-
|
84
|
-
def read_fixture(file)
|
85
|
-
filepath = File.join("test", "fixtures", file)
|
86
|
-
s = File.read(filepath).strip.gsub(/\n\s*/, "")
|
87
|
-
MockHttpResponse.new(body: s, code: "200")
|
88
|
-
end
|
89
|
-
|
90
|
-
##
|
91
|
-
# Fixture to use if none match the given query.
|
92
|
-
#
|
93
|
-
def default_fixture_filename
|
94
|
-
"#{fixture_prefix}_madison_square_garden"
|
95
|
-
end
|
96
|
-
|
97
|
-
def fixture_prefix
|
98
|
-
handle
|
99
|
-
end
|
100
|
-
|
101
|
-
def fixture_for_query(query)
|
102
|
-
label = query.reverse_geocode? ? "reverse" : query.text.gsub(/[ \.]/, "_")
|
103
|
-
filename = "#{fixture_prefix}_#{label}"
|
104
|
-
fixture_exists?(filename) ? filename : default_fixture_filename
|
105
|
-
end
|
106
|
-
|
107
|
-
remove_method(:make_api_request)
|
108
|
-
|
109
|
-
def make_api_request(query)
|
110
|
-
raise TimeoutError if query.text == "timeout"
|
111
|
-
raise SocketError if query.text == "socket_error"
|
112
|
-
raise Errno::ECONNREFUSED if query.text == "connection_refused"
|
113
|
-
if query.text == "invalid_json"
|
114
|
-
return MockHttpResponse.new(:body => 'invalid json', :code => 200)
|
115
|
-
end
|
116
|
-
|
117
|
-
read_fixture fixture_for_query(query)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
class GooglePremier
|
122
|
-
private
|
123
|
-
def fixture_prefix
|
124
|
-
"google"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
class GooglePlacesDetails
|
129
|
-
private
|
130
|
-
def fixture_prefix
|
131
|
-
"google_places_details"
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
class Dstk
|
136
|
-
private
|
137
|
-
def fixture_prefix
|
138
|
-
"google"
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
class Yandex
|
143
|
-
private
|
144
|
-
def default_fixture_filename
|
145
|
-
"yandex_kremlin"
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
class Freegeoip
|
150
|
-
private
|
151
|
-
def default_fixture_filename
|
152
|
-
"freegeoip_74_200_247_59"
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
class Geoip2
|
157
|
-
private
|
158
|
-
|
159
|
-
remove_method(:results)
|
160
|
-
|
161
|
-
def results(query)
|
162
|
-
return [] if query.to_s == 'no results'
|
163
|
-
return [] if query.to_s == '127.0.0.1'
|
164
|
-
[{'city'=>{'names'=>{'en'=>'Mountain View'}},'country'=>{'iso_code'=>'US','names'=>
|
165
|
-
{'en'=>'United States'}},'location'=>{'latitude'=>37.41919999999999,
|
166
|
-
'longitude'=>-122.0574},'postal'=>{'code'=>'94043'},'subdivisions'=>[{
|
167
|
-
'iso_code'=>'CA','names'=>{'en'=>'California'}}]}]
|
168
|
-
end
|
169
|
-
|
170
|
-
def default_fixture_filename
|
171
|
-
'geoip2_74_200_247_59'
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
class Telize
|
176
|
-
private
|
177
|
-
def default_fixture_filename
|
178
|
-
"telize_74_200_247_59"
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
class Pointpin
|
183
|
-
private
|
184
|
-
def default_fixture_filename
|
185
|
-
"pointpin_80_111_555_555"
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
class Maxmind
|
190
|
-
private
|
191
|
-
def default_fixture_filename
|
192
|
-
"maxmind_74_200_247_59"
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
class MaxmindLocal
|
197
|
-
private
|
198
|
-
|
199
|
-
remove_method(:results)
|
200
|
-
|
201
|
-
def results query
|
202
|
-
return [] if query.to_s == "no results"
|
203
|
-
|
204
|
-
if query.to_s == '127.0.0.1'
|
205
|
-
[]
|
206
|
-
else
|
207
|
-
[{:request=>"8.8.8.8", :ip=>"8.8.8.8", :country_code2=>"US", :country_code3=>"USA", :country_name=>"United States", :continent_code=>"NA", :region_name=>"CA", :city_name=>"Mountain View", :postal_code=>"94043", :latitude=>37.41919999999999, :longitude=>-122.0574, :dma_code=>807, :area_code=>650, :timezone=>"America/Los_Angeles"}]
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
class Baidu
|
213
|
-
private
|
214
|
-
def default_fixture_filename
|
215
|
-
"baidu_shanghai_pearl_tower"
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
class BaiduIp
|
220
|
-
private
|
221
|
-
def default_fixture_filename
|
222
|
-
"baidu_ip_202_198_16_3"
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
class Geocodio
|
227
|
-
private
|
228
|
-
def default_fixture_filename
|
229
|
-
"geocodio_1101_pennsylvania_ave"
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
class Okf
|
234
|
-
private
|
235
|
-
def default_fixture_filename
|
236
|
-
"okf_kirstinmaki"
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
class PostcodeAnywhereUk
|
241
|
-
private
|
242
|
-
def fixture_prefix
|
243
|
-
'postcode_anywhere_uk_geocode_v2_00'
|
244
|
-
end
|
245
|
-
|
246
|
-
def default_fixture_filename
|
247
|
-
"#{fixture_prefix}_romsey"
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
##
|
254
|
-
# Geocoded model.
|
255
|
-
#
|
256
|
-
class Place < ActiveRecord::Base
|
257
|
-
geocoded_by :address
|
258
|
-
|
259
|
-
def initialize(name, address)
|
260
|
-
super()
|
261
|
-
write_attribute :name, name
|
262
|
-
write_attribute :address, address
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
|
-
##
|
267
|
-
# Geocoded model.
|
268
|
-
# - Has user-defined primary key (not just 'id')
|
269
|
-
#
|
270
|
-
class PlaceWithCustomPrimaryKey < Place
|
271
|
-
|
272
|
-
class << self
|
273
|
-
def primary_key
|
274
|
-
:custom_primary_key_id
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
end
|
279
|
-
|
280
|
-
class PlaceReverseGeocoded < ActiveRecord::Base
|
281
|
-
reverse_geocoded_by :latitude, :longitude
|
282
|
-
|
283
|
-
def initialize(name, latitude, longitude)
|
284
|
-
super()
|
285
|
-
write_attribute :name, name
|
286
|
-
write_attribute :latitude, latitude
|
287
|
-
write_attribute :longitude, longitude
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
class PlaceWithCustomResultsHandling < ActiveRecord::Base
|
292
|
-
geocoded_by :address do |obj,results|
|
293
|
-
if result = results.first
|
294
|
-
obj.coords_string = "#{result.latitude},#{result.longitude}"
|
295
|
-
else
|
296
|
-
obj.coords_string = "NOT FOUND"
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
|
-
def initialize(name, address)
|
301
|
-
super()
|
302
|
-
write_attribute :name, name
|
303
|
-
write_attribute :address, address
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
|
-
class PlaceReverseGeocodedWithCustomResultsHandling < ActiveRecord::Base
|
308
|
-
reverse_geocoded_by :latitude, :longitude do |obj,results|
|
309
|
-
if result = results.first
|
310
|
-
obj.country = result.country_code
|
311
|
-
end
|
312
|
-
end
|
313
|
-
|
314
|
-
def initialize(name, latitude, longitude)
|
315
|
-
super()
|
316
|
-
write_attribute :name, name
|
317
|
-
write_attribute :latitude, latitude
|
318
|
-
write_attribute :longitude, longitude
|
319
|
-
end
|
320
|
-
end
|
321
|
-
|
322
|
-
class PlaceWithForwardAndReverseGeocoding < ActiveRecord::Base
|
323
|
-
geocoded_by :address, :latitude => :lat, :longitude => :lon
|
324
|
-
reverse_geocoded_by :lat, :lon, :address => :location
|
325
|
-
|
326
|
-
def initialize(name)
|
327
|
-
super()
|
328
|
-
write_attribute :name, name
|
329
|
-
end
|
330
|
-
end
|
331
|
-
|
332
|
-
class PlaceWithCustomLookup < ActiveRecord::Base
|
333
|
-
geocoded_by :address, :lookup => :nominatim do |obj,results|
|
334
|
-
if result = results.first
|
335
|
-
obj.result_class = result.class
|
336
|
-
end
|
337
|
-
end
|
338
|
-
|
339
|
-
def initialize(name, address)
|
340
|
-
super()
|
341
|
-
write_attribute :name, name
|
342
|
-
write_attribute :address, address
|
343
|
-
end
|
344
|
-
end
|
345
|
-
|
346
|
-
class PlaceWithCustomLookupProc < ActiveRecord::Base
|
347
|
-
geocoded_by :address, :lookup => lambda{|obj| obj.custom_lookup } do |obj,results|
|
348
|
-
if result = results.first
|
349
|
-
obj.result_class = result.class
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
|
-
def custom_lookup
|
354
|
-
:nominatim
|
355
|
-
end
|
356
|
-
|
357
|
-
def initialize(name, address)
|
358
|
-
super()
|
359
|
-
write_attribute :name, name
|
360
|
-
write_attribute :address, address
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
class PlaceReverseGeocodedWithCustomLookup < ActiveRecord::Base
|
365
|
-
reverse_geocoded_by :latitude, :longitude, :lookup => :nominatim do |obj,results|
|
366
|
-
if result = results.first
|
367
|
-
obj.result_class = result.class
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
def initialize(name, latitude, longitude)
|
372
|
-
super()
|
373
|
-
write_attribute :name, name
|
374
|
-
write_attribute :latitude, latitude
|
375
|
-
write_attribute :longitude, longitude
|
376
|
-
end
|
377
|
-
end
|
378
|
-
|
379
|
-
|
380
|
-
class GeocoderTestCase < Test::Unit::TestCase
|
381
|
-
|
382
|
-
def setup
|
383
|
-
super
|
384
|
-
Geocoder::Configuration.instance.set_defaults
|
385
|
-
Geocoder.configure(:maxmind => {:service => :city_isp_org})
|
386
|
-
end
|
387
|
-
|
388
|
-
def geocoded_object_params(abbrev)
|
389
|
-
{
|
390
|
-
:msg => ["Madison Square Garden", "4 Penn Plaza, New York, NY"]
|
391
|
-
}[abbrev]
|
392
|
-
end
|
393
|
-
|
394
|
-
def reverse_geocoded_object_params(abbrev)
|
395
|
-
{
|
396
|
-
:msg => ["Madison Square Garden", 40.750354, -73.993371]
|
397
|
-
}[abbrev]
|
398
|
-
end
|
399
|
-
|
400
|
-
def set_api_key!(lookup_name)
|
401
|
-
lookup = Geocoder::Lookup.get(lookup_name)
|
402
|
-
if lookup.required_api_key_parts.size == 1
|
403
|
-
key = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
404
|
-
elsif lookup.required_api_key_parts.size > 1
|
405
|
-
key = lookup.required_api_key_parts
|
406
|
-
else
|
407
|
-
key = nil
|
408
|
-
end
|
409
|
-
Geocoder.configure(:api_key => key)
|
410
|
-
end
|
411
|
-
end
|
412
|
-
|
413
|
-
class MockHttpResponse
|
414
|
-
attr_reader :code, :body
|
415
|
-
def initialize(options = {})
|
416
|
-
@code = options[:code].to_s
|
417
|
-
@body = options[:body]
|
418
|
-
end
|
419
|
-
|
420
|
-
def [](key)
|
421
|
-
send key if respond_to?(key)
|
422
|
-
end
|
423
|
-
end
|