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.

Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -1
  3. data/README.md +31 -28
  4. data/examples/reverse_geocode_job.rb +40 -0
  5. data/lib/geocoder.rb +1 -0
  6. data/lib/geocoder/configuration.rb +5 -1
  7. data/lib/geocoder/exceptions.rb +3 -0
  8. data/lib/geocoder/ip_address.rb +2 -10
  9. data/lib/geocoder/logger.rb +55 -0
  10. data/lib/geocoder/lookup.rb +2 -1
  11. data/lib/geocoder/lookups/baidu.rb +5 -5
  12. data/lib/geocoder/lookups/baidu_ip.rb +5 -5
  13. data/lib/geocoder/lookups/base.rb +21 -16
  14. data/lib/geocoder/lookups/bing.rb +15 -2
  15. data/lib/geocoder/lookups/esri.rb +1 -1
  16. data/lib/geocoder/lookups/geocoder_ca.rb +1 -2
  17. data/lib/geocoder/lookups/geocodio.rb +3 -3
  18. data/lib/geocoder/lookups/google.rb +3 -3
  19. data/lib/geocoder/lookups/google_places_details.rb +3 -3
  20. data/lib/geocoder/lookups/mapquest.rb +3 -3
  21. data/lib/geocoder/lookups/maxmind.rb +1 -1
  22. data/lib/geocoder/lookups/maxmind_geoip2.rb +69 -0
  23. data/lib/geocoder/lookups/nominatim.rb +1 -1
  24. data/lib/geocoder/lookups/opencagedata.rb +4 -4
  25. data/lib/geocoder/lookups/pointpin.rb +4 -4
  26. data/lib/geocoder/lookups/postcode_anywhere_uk.rb +3 -3
  27. data/lib/geocoder/lookups/yahoo.rb +3 -3
  28. data/lib/geocoder/lookups/yandex.rb +3 -3
  29. data/lib/geocoder/query.rb +1 -1
  30. data/lib/geocoder/request.rb +70 -12
  31. data/lib/geocoder/results/geoip2.rb +8 -14
  32. data/lib/geocoder/results/maxmind_geoip2.rb +9 -0
  33. data/lib/geocoder/results/yandex.rb +5 -5
  34. data/lib/geocoder/version.rb +1 -1
  35. metadata +6 -147
  36. data/.gitignore +0 -6
  37. data/.travis.yml +0 -32
  38. data/Rakefile +0 -25
  39. data/examples/sidekiq_worker.rb +0 -16
  40. data/gemfiles/Gemfile.mongoid-2.4.x +0 -16
  41. data/test/fixtures/baidu_invalid_key +0 -1
  42. data/test/fixtures/baidu_ip_202_198_16_3 +0 -19
  43. data/test/fixtures/baidu_ip_invalid_key +0 -1
  44. data/test/fixtures/baidu_ip_no_results +0 -1
  45. data/test/fixtures/baidu_no_results +0 -1
  46. data/test/fixtures/baidu_reverse +0 -1
  47. data/test/fixtures/baidu_shanghai_pearl_tower +0 -12
  48. data/test/fixtures/bing_invalid_key +0 -1
  49. data/test/fixtures/bing_madison_square_garden +0 -40
  50. data/test/fixtures/bing_no_results +0 -16
  51. data/test/fixtures/bing_reverse +0 -42
  52. data/test/fixtures/cloudmade_invalid_key +0 -1
  53. data/test/fixtures/cloudmade_madison_square_garden +0 -1
  54. data/test/fixtures/cloudmade_no_results +0 -1
  55. data/test/fixtures/esri_madison_square_garden +0 -59
  56. data/test/fixtures/esri_no_results +0 -8
  57. data/test/fixtures/esri_reverse +0 -21
  58. data/test/fixtures/freegeoip_74_200_247_59 +0 -12
  59. data/test/fixtures/freegeoip_no_results +0 -1
  60. data/test/fixtures/geocoder_ca_madison_square_garden +0 -1
  61. data/test/fixtures/geocoder_ca_no_results +0 -1
  62. data/test/fixtures/geocoder_ca_reverse +0 -34
  63. data/test/fixtures/geocoder_us_madison_square_garden +0 -1
  64. data/test/fixtures/geocoder_us_no_results +0 -1
  65. data/test/fixtures/geocodio_1101_pennsylvania_ave +0 -1
  66. data/test/fixtures/geocodio_bad_api_key +0 -3
  67. data/test/fixtures/geocodio_invalid +0 -4
  68. data/test/fixtures/geocodio_no_results +0 -1
  69. data/test/fixtures/geocodio_over_query_limit +0 -4
  70. data/test/fixtures/google_garbage +0 -456
  71. data/test/fixtures/google_madison_square_garden +0 -57
  72. data/test/fixtures/google_no_city_data +0 -44
  73. data/test/fixtures/google_no_locality +0 -51
  74. data/test/fixtures/google_no_results +0 -4
  75. data/test/fixtures/google_over_limit +0 -4
  76. data/test/fixtures/google_places_details_invalid_request +0 -4
  77. data/test/fixtures/google_places_details_madison_square_garden +0 -120
  78. data/test/fixtures/google_places_details_no_results +0 -4
  79. data/test/fixtures/google_places_details_no_reviews +0 -60
  80. data/test/fixtures/google_places_details_no_types +0 -66
  81. data/test/fixtures/here_madison_square_garden +0 -72
  82. data/test/fixtures/here_no_results +0 -8
  83. data/test/fixtures/mapquest_error +0 -16
  84. data/test/fixtures/mapquest_invalid_api_key +0 -16
  85. data/test/fixtures/mapquest_invalid_request +0 -16
  86. data/test/fixtures/mapquest_madison_square_garden +0 -52
  87. data/test/fixtures/mapquest_no_results +0 -16
  88. data/test/fixtures/maxmind_24_24_24_21 +0 -1
  89. data/test/fixtures/maxmind_24_24_24_22 +0 -1
  90. data/test/fixtures/maxmind_24_24_24_23 +0 -1
  91. data/test/fixtures/maxmind_24_24_24_24 +0 -1
  92. data/test/fixtures/maxmind_74_200_247_59 +0 -1
  93. data/test/fixtures/maxmind_invalid_key +0 -1
  94. data/test/fixtures/maxmind_no_results +0 -1
  95. data/test/fixtures/nominatim_madison_square_garden +0 -150
  96. data/test/fixtures/nominatim_no_results +0 -1
  97. data/test/fixtures/nominatim_over_limit +0 -1
  98. data/test/fixtures/okf_kirstinmaki +0 -67
  99. data/test/fixtures/okf_no_results +0 -4
  100. data/test/fixtures/opencagedata_invalid_api_key +0 -25
  101. data/test/fixtures/opencagedata_invalid_request +0 -26
  102. data/test/fixtures/opencagedata_madison_square_garden +0 -73
  103. data/test/fixtures/opencagedata_no_results +0 -29
  104. data/test/fixtures/opencagedata_over_limit +0 -31
  105. data/test/fixtures/ovi_madison_square_garden +0 -72
  106. data/test/fixtures/ovi_no_results +0 -8
  107. data/test/fixtures/pointpin_10_10_10_10 +0 -1
  108. data/test/fixtures/pointpin_555_555_555_555 +0 -1
  109. data/test/fixtures/pointpin_80_111_555_555 +0 -1
  110. data/test/fixtures/pointpin_no_results +0 -1
  111. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_WR26NJ +0 -1
  112. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_generic_error +0 -1
  113. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_hampshire +0 -1
  114. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_key_limit_exceeded +0 -1
  115. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_no_results +0 -1
  116. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_romsey +0 -1
  117. data/test/fixtures/postcode_anywhere_uk_geocode_v2_00_unknown_key +0 -1
  118. data/test/fixtures/smarty_streets_11211 +0 -1
  119. data/test/fixtures/smarty_streets_madison_square_garden +0 -47
  120. data/test/fixtures/smarty_streets_no_results +0 -1
  121. data/test/fixtures/telize_10_10_10_10 +0 -1
  122. data/test/fixtures/telize_555_555_555_555 +0 -4
  123. data/test/fixtures/telize_74_200_247_59 +0 -1
  124. data/test/fixtures/telize_no_results +0 -1
  125. data/test/fixtures/yahoo_error +0 -1
  126. data/test/fixtures/yahoo_invalid_key +0 -2
  127. data/test/fixtures/yahoo_madison_square_garden +0 -52
  128. data/test/fixtures/yahoo_no_results +0 -10
  129. data/test/fixtures/yahoo_over_limit +0 -2
  130. data/test/fixtures/yandex_canada_rue_dupuis_14 +0 -446
  131. data/test/fixtures/yandex_invalid_key +0 -1
  132. data/test/fixtures/yandex_kremlin +0 -48
  133. data/test/fixtures/yandex_new_york +0 -1
  134. data/test/fixtures/yandex_no_administrative_area +0 -53
  135. data/test/fixtures/yandex_no_city_and_town +0 -112
  136. data/test/fixtures/yandex_no_results +0 -16
  137. data/test/integration/http_client_test.rb +0 -31
  138. data/test/mongoid_test_helper.rb +0 -43
  139. data/test/test_helper.rb +0 -423
  140. data/test/unit/active_record_test.rb +0 -16
  141. data/test/unit/cache_test.rb +0 -37
  142. data/test/unit/calculations_test.rb +0 -220
  143. data/test/unit/configuration_test.rb +0 -55
  144. data/test/unit/error_handling_test.rb +0 -79
  145. data/test/unit/geocoder_test.rb +0 -78
  146. data/test/unit/https_test.rb +0 -17
  147. data/test/unit/ip_address_test.rb +0 -27
  148. data/test/unit/lookup_test.rb +0 -153
  149. data/test/unit/lookups/bing_test.rb +0 -68
  150. data/test/unit/lookups/dstk_test.rb +0 -26
  151. data/test/unit/lookups/esri_test.rb +0 -48
  152. data/test/unit/lookups/freegeoip_test.rb +0 -27
  153. data/test/unit/lookups/geocoder_ca_test.rb +0 -17
  154. data/test/unit/lookups/geocodio_test.rb +0 -56
  155. data/test/unit/lookups/geoip2_test.rb +0 -27
  156. data/test/unit/lookups/google_places_details_test.rb +0 -122
  157. data/test/unit/lookups/google_premier_test.rb +0 -22
  158. data/test/unit/lookups/google_test.rb +0 -84
  159. data/test/unit/lookups/mapquest_test.rb +0 -60
  160. data/test/unit/lookups/maxmind_local_test.rb +0 -28
  161. data/test/unit/lookups/maxmind_test.rb +0 -63
  162. data/test/unit/lookups/nominatim_test.rb +0 -31
  163. data/test/unit/lookups/okf_test.rb +0 -38
  164. data/test/unit/lookups/opencagedata_test.rb +0 -64
  165. data/test/unit/lookups/pointpin_test.rb +0 -30
  166. data/test/unit/lookups/postcode_anywhere_uk_test.rb +0 -70
  167. data/test/unit/lookups/smarty_streets_test.rb +0 -71
  168. data/test/unit/lookups/telize_test.rb +0 -36
  169. data/test/unit/lookups/yahoo_test.rb +0 -35
  170. data/test/unit/method_aliases_test.rb +0 -26
  171. data/test/unit/model_test.rb +0 -38
  172. data/test/unit/mongoid_test.rb +0 -47
  173. data/test/unit/near_test.rb +0 -87
  174. data/test/unit/oauth_util_test.rb +0 -31
  175. data/test/unit/proxy_test.rb +0 -37
  176. data/test/unit/query_test.rb +0 -52
  177. data/test/unit/rake_task_test.rb +0 -21
  178. data/test/unit/request_test.rb +0 -35
  179. data/test/unit/result_test.rb +0 -81
  180. 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,16 +0,0 @@
1
- {
2
- "response": {
3
- "GeoObjectCollection": {
4
- "metaDataProperty": {
5
- "GeocoderResponseMetaData": {
6
- "request": "blah",
7
- "found": "0",
8
- "results": "10"
9
- }
10
- },
11
- "featureMember": [
12
-
13
- ]
14
- }
15
- }
16
- }
@@ -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
@@ -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
@@ -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