geocoder 1.4.9 → 1.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +60 -0
  3. data/LICENSE +1 -1
  4. data/README.md +350 -979
  5. data/bin/console +13 -0
  6. data/examples/autoexpire_cache_redis.rb +2 -0
  7. data/lib/easting_northing.rb +171 -0
  8. data/lib/generators/geocoder/config/templates/initializer.rb +1 -1
  9. data/lib/geocoder/cache.rb +4 -0
  10. data/lib/geocoder/calculations.rb +1 -1
  11. data/lib/geocoder/cli.rb +2 -2
  12. data/lib/geocoder/configuration.rb +3 -2
  13. data/lib/geocoder/configuration_hash.rb +4 -4
  14. data/lib/geocoder/exceptions.rb +1 -1
  15. data/lib/geocoder/ip_address.rb +16 -2
  16. data/lib/geocoder/lookup.rb +9 -5
  17. data/lib/geocoder/lookups/abstract_api.rb +46 -0
  18. data/lib/geocoder/lookups/amap.rb +7 -3
  19. data/lib/geocoder/lookups/baidu.rb +14 -10
  20. data/lib/geocoder/lookups/baidu_ip.rb +7 -36
  21. data/lib/geocoder/lookups/ban_data_gouv_fr.rb +18 -5
  22. data/lib/geocoder/lookups/base.rb +27 -4
  23. data/lib/geocoder/lookups/bing.rb +10 -13
  24. data/lib/geocoder/lookups/db_ip_com.rb +9 -6
  25. data/lib/geocoder/lookups/dstk.rb +4 -2
  26. data/lib/geocoder/lookups/esri.rb +44 -28
  27. data/lib/geocoder/lookups/freegeoip.rb +11 -7
  28. data/lib/geocoder/lookups/geocoder_ca.rb +4 -4
  29. data/lib/geocoder/lookups/geocodio.rb +5 -5
  30. data/lib/geocoder/lookups/geoportail_lu.rb +7 -7
  31. data/lib/geocoder/lookups/google.rb +15 -10
  32. data/lib/geocoder/lookups/google_places_details.rb +11 -17
  33. data/lib/geocoder/lookups/google_places_search.rb +30 -4
  34. data/lib/geocoder/lookups/google_premier.rb +14 -0
  35. data/lib/geocoder/lookups/here.rb +29 -23
  36. data/lib/geocoder/lookups/ip2location.rb +67 -0
  37. data/lib/geocoder/lookups/ipapi_com.rb +9 -13
  38. data/lib/geocoder/lookups/ipdata_co.rb +9 -4
  39. data/lib/geocoder/lookups/ipgeolocation.rb +51 -0
  40. data/lib/geocoder/lookups/ipinfo_io.rb +11 -29
  41. data/lib/geocoder/lookups/ipregistry.rb +68 -0
  42. data/lib/geocoder/lookups/ipstack.rb +11 -12
  43. data/lib/geocoder/lookups/latlon.rb +5 -6
  44. data/lib/geocoder/lookups/location_iq.rb +10 -4
  45. data/lib/geocoder/lookups/mapbox.rb +7 -6
  46. data/lib/geocoder/lookups/mapquest.rb +4 -5
  47. data/lib/geocoder/lookups/maxmind.rb +6 -6
  48. data/lib/geocoder/lookups/maxmind_geoip2.rb +8 -7
  49. data/lib/geocoder/lookups/maxmind_local.rb +7 -1
  50. data/lib/geocoder/lookups/nationaal_georegister_nl.rb +38 -0
  51. data/lib/geocoder/lookups/nominatim.rb +4 -4
  52. data/lib/geocoder/lookups/opencagedata.rb +6 -5
  53. data/lib/geocoder/lookups/osmnames.rb +57 -0
  54. data/lib/geocoder/lookups/pelias.rb +8 -9
  55. data/lib/geocoder/lookups/pickpoint.rb +9 -3
  56. data/lib/geocoder/lookups/pointpin.rb +10 -9
  57. data/lib/geocoder/lookups/postcode_anywhere_uk.rb +4 -5
  58. data/lib/geocoder/lookups/postcodes_io.rb +6 -3
  59. data/lib/geocoder/lookups/smarty_streets.rb +26 -11
  60. data/lib/geocoder/lookups/telize.rb +24 -4
  61. data/lib/geocoder/lookups/tencent.rb +59 -0
  62. data/lib/geocoder/lookups/test.rb +4 -0
  63. data/lib/geocoder/lookups/uk_ordnance_survey_names.rb +59 -0
  64. data/lib/geocoder/lookups/yandex.rb +7 -8
  65. data/lib/geocoder/query.rb +14 -0
  66. data/lib/geocoder/railtie.rb +1 -1
  67. data/lib/geocoder/results/abstract_api.rb +146 -0
  68. data/lib/geocoder/results/baidu.rb +10 -14
  69. data/lib/geocoder/results/ban_data_gouv_fr.rb +27 -2
  70. data/lib/geocoder/results/base.rb +13 -1
  71. data/lib/geocoder/results/bing.rb +1 -1
  72. data/lib/geocoder/results/db_ip_com.rb +1 -6
  73. data/lib/geocoder/results/freegeoip.rb +0 -5
  74. data/lib/geocoder/results/geocoder_ca.rb +3 -3
  75. data/lib/geocoder/results/geoip2.rb +0 -4
  76. data/lib/geocoder/results/geoportail_lu.rb +5 -3
  77. data/lib/geocoder/results/here.rb +4 -1
  78. data/lib/geocoder/results/ip2location.rb +22 -0
  79. data/lib/geocoder/results/ipdata_co.rb +0 -5
  80. data/lib/geocoder/results/ipgeolocation.rb +59 -0
  81. data/lib/geocoder/results/ipregistry.rb +304 -0
  82. data/lib/geocoder/results/maxmind.rb +0 -5
  83. data/lib/geocoder/results/maxmind_local.rb +0 -5
  84. data/lib/geocoder/results/nationaal_georegister_nl.rb +62 -0
  85. data/lib/geocoder/results/nominatim.rb +4 -0
  86. data/lib/geocoder/results/osmnames.rb +56 -0
  87. data/lib/geocoder/results/smarty_streets.rb +48 -18
  88. data/lib/geocoder/results/telize.rb +0 -5
  89. data/lib/geocoder/results/tencent.rb +72 -0
  90. data/lib/geocoder/results/test.rb +1 -1
  91. data/lib/geocoder/results/uk_ordnance_survey_names.rb +59 -0
  92. data/lib/geocoder/results/yandex.rb +217 -59
  93. data/lib/geocoder/sql.rb +4 -4
  94. data/lib/geocoder/stores/active_record.rb +1 -3
  95. data/lib/geocoder/util.rb +29 -0
  96. data/lib/geocoder/version.rb +1 -1
  97. data/lib/maxmind_database.rb +3 -3
  98. metadata +27 -23
  99. data/lib/geocoder/lookups/geocoder_us.rb +0 -43
  100. data/lib/geocoder/lookups/mapzen.rb +0 -15
  101. data/lib/geocoder/lookups/okf.rb +0 -44
  102. data/lib/geocoder/lookups/ovi.rb +0 -62
  103. data/lib/geocoder/results/geocoder_us.rb +0 -39
  104. data/lib/geocoder/results/mapzen.rb +0 -5
  105. data/lib/geocoder/results/okf.rb +0 -106
  106. data/lib/geocoder/results/ovi.rb +0 -71
  107. data/lib/hash_recursive_merge.rb +0 -74
data/lib/geocoder/sql.rb CHANGED
@@ -44,13 +44,13 @@ module Geocoder
44
44
  end
45
45
 
46
46
  def within_bounding_box(sw_lat, sw_lng, ne_lat, ne_lng, lat_attr, lon_attr)
47
- spans = "#{lat_attr} BETWEEN #{sw_lat} AND #{ne_lat} AND "
47
+ spans = "#{lat_attr} BETWEEN #{sw_lat.to_f} AND #{ne_lat.to_f} AND "
48
48
  # handle box that spans 180 longitude
49
49
  if sw_lng.to_f > ne_lng.to_f
50
- spans + "(#{lon_attr} BETWEEN #{sw_lng} AND 180 OR " +
51
- "#{lon_attr} BETWEEN -180 AND #{ne_lng})"
50
+ spans + "(#{lon_attr} BETWEEN #{sw_lng.to_f} AND 180 OR " +
51
+ "#{lon_attr} BETWEEN -180 AND #{ne_lng.to_f})"
52
52
  else
53
- spans + "#{lon_attr} BETWEEN #{sw_lng} AND #{ne_lng}"
53
+ spans + "#{lon_attr} BETWEEN #{sw_lng.to_f} AND #{ne_lng.to_f}"
54
54
  end
55
55
  end
56
56
 
@@ -60,7 +60,7 @@ module Geocoder::Store
60
60
  # corner followed by the northeast corner of the box
61
61
  # (<tt>[[sw_lat, sw_lon], [ne_lat, ne_lon]]</tt>).
62
62
  #
63
- scope :within_bounding_box, lambda{ |bounds|
63
+ scope :within_bounding_box, lambda{ |*bounds|
64
64
  sw_lat, sw_lng, ne_lat, ne_lng = bounds.flatten if bounds
65
65
  if sw_lat && sw_lng && ne_lat && ne_lng
66
66
  where(Geocoder::Sql.within_bounding_box(
@@ -166,8 +166,6 @@ module Geocoder::Store
166
166
  }
167
167
  end
168
168
 
169
- private # ----------------------------------------------------------------
170
-
171
169
  ##
172
170
  # SQL for calculating distance based on the current database's
173
171
  # capabilities (trig functions?).
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Geocoder
4
+ module Util
5
+ #
6
+ # Recursive version of Hash#merge!
7
+ #
8
+ # Adds the contents of +h2+ to +h1+,
9
+ # merging entries in +h1+ with duplicate keys with those from +h2+.
10
+ #
11
+ # Compared with Hash#merge!, this method supports nested hashes.
12
+ # When both +h1+ and +h2+ contains an entry with the same key,
13
+ # it merges and returns the values from both hashes.
14
+ #
15
+ # h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
16
+ # h2 = {"b" => 254, "c" => {"c1" => 16, "c3" => 94}}
17
+ # recursive_hash_merge(h1, h2) #=> {"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}}
18
+ #
19
+ # Simply using Hash#merge! would return
20
+ #
21
+ # h1.merge!(h2) #=> {"a" => 100, "b" = >254, "c" => {"c1" => 16, "c3" => 94}}
22
+ #
23
+ def self.recursive_hash_merge(h1, h2)
24
+ h1.merge!(h2) do |_key, oldval, newval|
25
+ oldval.class == h1.class ? self.recursive_hash_merge(oldval, newval) : newval
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Geocoder
2
- VERSION = "1.4.9"
2
+ VERSION = "1.6.7"
3
3
  end
@@ -96,9 +96,9 @@ module Geocoder
96
96
 
97
97
  def archive_url_path(package)
98
98
  {
99
- geolite_country_csv: "GeoIPCountryCSV.zip",
100
- geolite_city_csv: "GeoLiteCity_CSV/GeoLiteCity-latest.zip",
101
- geolite_asn_csv: "asnum/GeoIPASNum2.zip"
99
+ geolite_country_csv: "GeoLite2-Country-CSV.zip",
100
+ geolite_city_csv: "GeoLite2-City-CSV.zip",
101
+ geolite_asn_csv: "GeoLite2-ASN-CSV.zip"
102
102
  }[package]
103
103
  end
104
104
 
metadata CHANGED
@@ -1,19 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geocoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.9
4
+ version: 1.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Reisner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-27 00:00:00.000000000 Z
11
+ date: 2021-04-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Provides object geocoding (by street or IP address), reverse geocoding
14
- (coordinates to street address), distance queries for ActiveRecord and Mongoid,
15
- result caching, and more. Designed for Rails but works with Sinatra and other Rack
16
- frameworks too.
13
+ description: Object geocoding (by street or IP address), reverse geocoding (coordinates
14
+ to street address), distance queries for ActiveRecord and Mongoid, result caching,
15
+ and more. Designed for Rails but works with Sinatra and other Rack frameworks too.
17
16
  email:
18
17
  - alex@alexreisner.com
19
18
  executables:
@@ -24,11 +23,13 @@ files:
24
23
  - CHANGELOG.md
25
24
  - LICENSE
26
25
  - README.md
26
+ - bin/console
27
27
  - bin/geocode
28
28
  - examples/autoexpire_cache_dalli.rb
29
29
  - examples/autoexpire_cache_redis.rb
30
30
  - examples/cache_bypass.rb
31
31
  - examples/reverse_geocode_job.rb
32
+ - lib/easting_northing.rb
32
33
  - lib/generators/geocoder/config/config_generator.rb
33
34
  - lib/generators/geocoder/config/templates/initializer.rb
34
35
  - lib/generators/geocoder/maxmind/geolite_city_generator.rb
@@ -48,6 +49,7 @@ files:
48
49
  - lib/geocoder/kernel_logger.rb
49
50
  - lib/geocoder/logger.rb
50
51
  - lib/geocoder/lookup.rb
52
+ - lib/geocoder/lookups/abstract_api.rb
51
53
  - lib/geocoder/lookups/amap.rb
52
54
  - lib/geocoder/lookups/baidu.rb
53
55
  - lib/geocoder/lookups/baidu_ip.rb
@@ -59,7 +61,6 @@ files:
59
61
  - lib/geocoder/lookups/esri.rb
60
62
  - lib/geocoder/lookups/freegeoip.rb
61
63
  - lib/geocoder/lookups/geocoder_ca.rb
62
- - lib/geocoder/lookups/geocoder_us.rb
63
64
  - lib/geocoder/lookups/geocodio.rb
64
65
  - lib/geocoder/lookups/geoip2.rb
65
66
  - lib/geocoder/lookups/geoportail_lu.rb
@@ -68,22 +69,24 @@ files:
68
69
  - lib/geocoder/lookups/google_places_search.rb
69
70
  - lib/geocoder/lookups/google_premier.rb
70
71
  - lib/geocoder/lookups/here.rb
72
+ - lib/geocoder/lookups/ip2location.rb
71
73
  - lib/geocoder/lookups/ipapi_com.rb
72
74
  - lib/geocoder/lookups/ipdata_co.rb
75
+ - lib/geocoder/lookups/ipgeolocation.rb
73
76
  - lib/geocoder/lookups/ipinfo_io.rb
77
+ - lib/geocoder/lookups/ipregistry.rb
74
78
  - lib/geocoder/lookups/ipstack.rb
75
79
  - lib/geocoder/lookups/latlon.rb
76
80
  - lib/geocoder/lookups/location_iq.rb
77
81
  - lib/geocoder/lookups/mapbox.rb
78
82
  - lib/geocoder/lookups/mapquest.rb
79
- - lib/geocoder/lookups/mapzen.rb
80
83
  - lib/geocoder/lookups/maxmind.rb
81
84
  - lib/geocoder/lookups/maxmind_geoip2.rb
82
85
  - lib/geocoder/lookups/maxmind_local.rb
86
+ - lib/geocoder/lookups/nationaal_georegister_nl.rb
83
87
  - lib/geocoder/lookups/nominatim.rb
84
- - lib/geocoder/lookups/okf.rb
85
88
  - lib/geocoder/lookups/opencagedata.rb
86
- - lib/geocoder/lookups/ovi.rb
89
+ - lib/geocoder/lookups/osmnames.rb
87
90
  - lib/geocoder/lookups/pelias.rb
88
91
  - lib/geocoder/lookups/pickpoint.rb
89
92
  - lib/geocoder/lookups/pointpin.rb
@@ -91,7 +94,9 @@ files:
91
94
  - lib/geocoder/lookups/postcodes_io.rb
92
95
  - lib/geocoder/lookups/smarty_streets.rb
93
96
  - lib/geocoder/lookups/telize.rb
97
+ - lib/geocoder/lookups/tencent.rb
94
98
  - lib/geocoder/lookups/test.rb
99
+ - lib/geocoder/lookups/uk_ordnance_survey_names.rb
95
100
  - lib/geocoder/lookups/yandex.rb
96
101
  - lib/geocoder/models/active_record.rb
97
102
  - lib/geocoder/models/base.rb
@@ -101,6 +106,7 @@ files:
101
106
  - lib/geocoder/query.rb
102
107
  - lib/geocoder/railtie.rb
103
108
  - lib/geocoder/request.rb
109
+ - lib/geocoder/results/abstract_api.rb
104
110
  - lib/geocoder/results/amap.rb
105
111
  - lib/geocoder/results/baidu.rb
106
112
  - lib/geocoder/results/baidu_ip.rb
@@ -112,7 +118,6 @@ files:
112
118
  - lib/geocoder/results/esri.rb
113
119
  - lib/geocoder/results/freegeoip.rb
114
120
  - lib/geocoder/results/geocoder_ca.rb
115
- - lib/geocoder/results/geocoder_us.rb
116
121
  - lib/geocoder/results/geocodio.rb
117
122
  - lib/geocoder/results/geoip2.rb
118
123
  - lib/geocoder/results/geoportail_lu.rb
@@ -121,22 +126,24 @@ files:
121
126
  - lib/geocoder/results/google_places_search.rb
122
127
  - lib/geocoder/results/google_premier.rb
123
128
  - lib/geocoder/results/here.rb
129
+ - lib/geocoder/results/ip2location.rb
124
130
  - lib/geocoder/results/ipapi_com.rb
125
131
  - lib/geocoder/results/ipdata_co.rb
132
+ - lib/geocoder/results/ipgeolocation.rb
126
133
  - lib/geocoder/results/ipinfo_io.rb
134
+ - lib/geocoder/results/ipregistry.rb
127
135
  - lib/geocoder/results/ipstack.rb
128
136
  - lib/geocoder/results/latlon.rb
129
137
  - lib/geocoder/results/location_iq.rb
130
138
  - lib/geocoder/results/mapbox.rb
131
139
  - lib/geocoder/results/mapquest.rb
132
- - lib/geocoder/results/mapzen.rb
133
140
  - lib/geocoder/results/maxmind.rb
134
141
  - lib/geocoder/results/maxmind_geoip2.rb
135
142
  - lib/geocoder/results/maxmind_local.rb
143
+ - lib/geocoder/results/nationaal_georegister_nl.rb
136
144
  - lib/geocoder/results/nominatim.rb
137
- - lib/geocoder/results/okf.rb
138
145
  - lib/geocoder/results/opencagedata.rb
139
- - lib/geocoder/results/ovi.rb
146
+ - lib/geocoder/results/osmnames.rb
140
147
  - lib/geocoder/results/pelias.rb
141
148
  - lib/geocoder/results/pickpoint.rb
142
149
  - lib/geocoder/results/pointpin.rb
@@ -144,7 +151,9 @@ files:
144
151
  - lib/geocoder/results/postcodes_io.rb
145
152
  - lib/geocoder/results/smarty_streets.rb
146
153
  - lib/geocoder/results/telize.rb
154
+ - lib/geocoder/results/tencent.rb
147
155
  - lib/geocoder/results/test.rb
156
+ - lib/geocoder/results/uk_ordnance_survey_names.rb
148
157
  - lib/geocoder/results/yandex.rb
149
158
  - lib/geocoder/sql.rb
150
159
  - lib/geocoder/stores/active_record.rb
@@ -152,8 +161,8 @@ files:
152
161
  - lib/geocoder/stores/mongo_base.rb
153
162
  - lib/geocoder/stores/mongo_mapper.rb
154
163
  - lib/geocoder/stores/mongoid.rb
164
+ - lib/geocoder/util.rb
155
165
  - lib/geocoder/version.rb
156
- - lib/hash_recursive_merge.rb
157
166
  - lib/maxmind_database.rb
158
167
  - lib/tasks/geocoder.rake
159
168
  - lib/tasks/maxmind.rake
@@ -163,11 +172,7 @@ licenses:
163
172
  metadata:
164
173
  source_code_uri: https://github.com/alexreisner/geocoder
165
174
  changelog_uri: https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md
166
- post_install_message: |2+
167
-
168
-
169
- NOTE: Geocoder's default IP address lookup has changed from FreeGeoIP.net to IPInfo.io. If you explicitly specify :freegeoip in your configuration you must choose a different IP lookup before FreeGeoIP is discontinued on July 1, 2018. If you do not explicitly specify :freegeoip you do not need to change anything.
170
-
175
+ post_install_message:
171
176
  rdoc_options: []
172
177
  require_paths:
173
178
  - lib
@@ -175,15 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
180
  requirements:
176
181
  - - ">="
177
182
  - !ruby/object:Gem::Version
178
- version: 1.9.3
183
+ version: 2.0.0
179
184
  required_rubygems_version: !ruby/object:Gem::Requirement
180
185
  requirements:
181
186
  - - ">="
182
187
  - !ruby/object:Gem::Version
183
188
  version: '0'
184
189
  requirements: []
185
- rubyforge_project:
186
- rubygems_version: 2.5.2
190
+ rubygems_version: 3.1.2
187
191
  signing_key:
188
192
  specification_version: 4
189
193
  summary: Complete geocoding solution for Ruby.
@@ -1,43 +0,0 @@
1
- require 'geocoder/lookups/base'
2
- require "geocoder/results/geocoder_us"
3
-
4
- module Geocoder::Lookup
5
- class GeocoderUs < Base
6
-
7
- def name
8
- "Geocoder.us"
9
- end
10
-
11
- def supported_protocols
12
- [:http]
13
- end
14
-
15
- def query_url(query)
16
- if configuration.api_key
17
- "#{protocol}://#{configuration.api_key}@geocoder.us/member/service/csv/geocode?" + url_query_string(query)
18
- else
19
- "#{protocol}://geocoder.us/service/csv/geocode?" + url_query_string(query)
20
- end
21
- end
22
-
23
- private
24
-
25
- def results(query)
26
- return [] unless doc = fetch_data(query)
27
- if doc[0].to_s =~ /^(\d+)\:/
28
- return []
29
- else
30
- return [doc.size == 5 ? ((doc[0..1] << nil) + doc[2..4]) : doc]
31
- end
32
- end
33
-
34
- def query_url_params(query)
35
- (query.text =~ /^\d{5}(?:-\d{4})?$/ ? {:zip => query} : {:address => query.sanitized_text}).merge(super)
36
- end
37
-
38
- def parse_raw_data(raw_data)
39
- raw_data.chomp.split(',')
40
- end
41
- end
42
- end
43
-
@@ -1,15 +0,0 @@
1
- require 'geocoder/lookups/pelias'
2
- require 'geocoder/results/mapzen'
3
-
4
- # https://mapzen.com/documentation/search/search/ for more information
5
- module Geocoder::Lookup
6
- class Mapzen < Pelias
7
- def name
8
- 'Mapzen'
9
- end
10
-
11
- def endpoint
12
- configuration[:endpoint] || 'search.mapzen.com'
13
- end
14
- end
15
- end
@@ -1,44 +0,0 @@
1
- require 'geocoder/lookups/base'
2
- require "geocoder/results/okf"
3
-
4
- module Geocoder::Lookup
5
- class Okf < Base
6
-
7
- def name
8
- "Okf"
9
- end
10
-
11
- def query_url(query)
12
- "#{protocol}://data.okf.fi/gis/1/geocode/json?" + url_query_string(query)
13
- end
14
-
15
- private # ---------------------------------------------------------------
16
-
17
- def valid_response?(response)
18
- json = parse_json(response.body)
19
- status = json["status"] if json
20
- super(response) and ['OK', 'ZERO_RESULTS'].include?(status)
21
- end
22
-
23
- def results(query)
24
- return [] unless doc = fetch_data(query)
25
- case doc['status']; when "OK" # OK status implies >0 results
26
- return doc['results']
27
- end
28
- return []
29
- end
30
-
31
- def query_url_okf_params(query)
32
- params = {
33
- (query.reverse_geocode? ? :latlng : :address) => query.sanitized_text,
34
- :sensor => "false",
35
- :language => (query.language || configuration.language)
36
- }
37
- params
38
- end
39
-
40
- def query_url_params(query)
41
- query_url_okf_params(query).merge(super)
42
- end
43
- end
44
- end
@@ -1,62 +0,0 @@
1
- require 'geocoder/lookups/base'
2
- require 'geocoder/results/ovi'
3
-
4
- module Geocoder::Lookup
5
- class Ovi < Base
6
-
7
- def name
8
- "Ovi"
9
- end
10
-
11
- def required_api_key_parts
12
- []
13
- end
14
-
15
- def query_url(query)
16
- "#{protocol}://lbs.ovi.com/search/6.2/#{if query.reverse_geocode? then 'reverse' end}geocode.json?" + url_query_string(query)
17
- end
18
-
19
- private # ---------------------------------------------------------------
20
-
21
- def results(query)
22
- return [] unless doc = fetch_data(query)
23
- return [] unless doc['Response'] && doc['Response']['View']
24
- if r=doc['Response']['View']
25
- return [] if r.nil? || !r.is_a?(Array) || r.empty?
26
- return r.first['Result']
27
- end
28
- []
29
- end
30
-
31
- def query_url_params(query)
32
- options = {
33
- :gen=>1,
34
- :app_id=>api_key,
35
- :app_code=>api_code
36
- }
37
-
38
- if query.reverse_geocode?
39
- super.merge(options).merge(
40
- :prox=>query.sanitized_text,
41
- :mode=>:retrieveAddresses
42
- )
43
- else
44
- super.merge(options).merge(
45
- :searchtext=>query.sanitized_text
46
- )
47
- end
48
- end
49
-
50
- def api_key
51
- if a=configuration.api_key
52
- return a.first if a.is_a?(Array)
53
- end
54
- end
55
-
56
- def api_code
57
- if a=configuration.api_key
58
- return a.last if a.is_a?(Array)
59
- end
60
- end
61
- end
62
- end
@@ -1,39 +0,0 @@
1
- require 'geocoder/results/base'
2
-
3
- module Geocoder::Result
4
- class GeocoderUs < Base
5
- def coordinates
6
- [@data[0].to_f, @data[1].to_f]
7
- end
8
-
9
- def address(format = :full)
10
- "#{street_address}, #{city}, #{state} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
11
- end
12
-
13
- def street_address
14
- @data[2]
15
- end
16
-
17
- def city
18
- @data[3]
19
- end
20
-
21
- def state
22
- @data[4]
23
- end
24
-
25
- alias_method :state_code, :state
26
-
27
- def postal_code
28
- @data[5]
29
- end
30
-
31
- def country
32
- 'United States'
33
- end
34
-
35
- def country_code
36
- 'US'
37
- end
38
- end
39
- end