geocoder-olleh 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc501f797e1cb573750e39461008492c5f2e6ede
4
- data.tar.gz: 546d18fc3a065185883e83d35495d2ea2173d2e9
3
+ metadata.gz: 9bff207aab53ada46cdd496289ced480643fe8cc
4
+ data.tar.gz: 77cc01c199ef17debc4f4eb0b40e2f09a92eded0
5
5
  SHA512:
6
- metadata.gz: a2a873ddadab1d82938c17205ab800753909788a2eed6bc641cd5860198d7e9d363394c674906e10d9ac7896f02035cc0fa5451b3503fc94d607bfbf99ac4f85
7
- data.tar.gz: d9c6ffee022e9492b8d27bdb55b44bbf74d1955ff6e376fa315cb923c47a819010d0ef4ab51890fe8844a152d429f85994161dde8670a25ceccadbc97ab778ac
6
+ metadata.gz: d07fb1b4ccee97e4d86ec72ad09793718bf1526542192abe0c913cf24679986a2938b8f6bd0c8a9ac21225a14236f8a344cf43116576062b7603e1d15f5a947c
7
+ data.tar.gz: f3623860e2fa5ead550fb48d281c96e52891d79b28c20b464ccf2e8060b55aaad4848f3eaac52cd558b4a9bb0af8b1fc8dec0764674adbe941aa3f22b6d52a80
@@ -107,6 +107,22 @@ module Geocoder::Lookup
107
107
  token
108
108
  end
109
109
 
110
+ def self.check_query_type(query)
111
+ if !query.options.empty? && query.options.include?(:priority)
112
+ query.options[:query_type] || query.options[:query_type] = "route_search"
113
+ elsif query.reverse_geocode? && query.options.include?(:include_jibun)
114
+ query.options[:query_type] || query.options[:query_type] = "reverse_geocoding"
115
+ elsif !query.options.empty? && query.options.include?(:coord_in)
116
+ query.options[:query_type] || query.options[:query_type] = "convert_coord"
117
+ elsif !query.options.empty? && query.options.include?(:l_code)
118
+ query.options[:query_type] || query.options[:query_type] = "addr_step_search"
119
+ elsif !query.options.empty? && query.options.include?(:radius)
120
+ query.options[:query_type] || query.options[:query_type] = "addr_nearest_position_search"
121
+ else
122
+ query.options[:query_type] || query.options[:query_type] = "geocoding"
123
+ end
124
+ end
125
+
110
126
 
111
127
  private # ----------------------------------------------
112
128
 
@@ -115,22 +131,24 @@ module Geocoder::Lookup
115
131
  data = fetch_data(query)
116
132
  return [] unless data
117
133
  doc = JSON.parse(URI.decode(data["payload"]))
118
- if doc['ERRCD'] != 0
119
- Geocoder.log(:warn, "Olleh API error: #{doc['ERRCD']} (#{doc['ERRMS'].gsub('+', ' ')}).")
134
+ if doc['ERRCD'] != nil && doc['ERRCD'] != 0
135
+ Geocoder.log(:warn, "Olleh API error: #{doc['ERRCD']} (#{doc['ERRMS'] if doc['ERRMS']}).")
120
136
  return []
121
137
  end
122
- # GEOCODING / REVERSE GECOCODING
123
- if doc['RESDATA']['COUNT']
138
+
139
+ case Olleh.check_query_type(query)
140
+ when "geocoding" || "reverse_geocoding"
124
141
  return [] if doc['RESDATA']['COUNT'] == 0
125
142
  return doc['RESDATA']["ADDRS"]
126
- # ROUTE SEARCH
127
- elsif doc['RESDATA']['SROUTE'] && doc['RESDATA']['SROUTE']['isRoute']
128
- return [] if doc['RESDATA']['SROUTE']['isRoute'] == 'false'
129
- return doc['RESDATA']
130
- # CONVERT COORDINATES
131
- elsif doc['RESDATA']['COORD'] && doc['RESDATA']['COORD']['COORDTYPE']
132
- return [] if doc['RESDATA']['COORD']['X'] == ''
143
+ when "route_search"
144
+ return [] if doc["RESDATA"]["SROUTE"]["isRoute"] == "false"
145
+ return doc["RESDATA"]
146
+ when "convert_coord"
133
147
  return doc['RESDATA']
148
+ when "addr_step_search"
149
+ return doc['RESULTDATA']
150
+ when "addr_nearest_position_search"
151
+ return doc['RESULTDATA']
134
152
  else
135
153
  []
136
154
  end
@@ -140,34 +158,25 @@ module Geocoder::Lookup
140
158
  timeout(configuration.timeout) do
141
159
  uri = URI.parse(query_url(query))
142
160
  Geocoder.log(:debug, "Geocoder: HTTP request being made for #{uri.to_s}")
143
- http_client.start(uri.host, uri.port, use_ssl: use_ssl?) do |client|
161
+ http_client.start(uri.host, uri.port, :use_ssl => true) do |client|
144
162
  req = Net::HTTP::Get.new(uri.request_uri, configuration.http_headers)
145
-
146
163
  client.request(req)
147
164
  end
148
165
  end
149
166
  end
150
167
 
151
- def token
152
- if a = configuration.api_key
153
- if a.is_a?(Array)
154
- return Base64.encode64("#{a.first}:#{a.last}").strip
155
- end
156
- end
157
- end
158
-
159
- def now
160
- Time.now.strftime("%Y%m%d%H%M%S%L")
161
- end
162
-
163
168
  def base_url(query)
164
- case check_query_type(query)
169
+ case Olleh.check_query_type(query)
165
170
  when "route_search"
166
171
  "https://openapi.kt.com/maps/etc/RouteSearch?params="
167
172
  when "reverse_geocoding"
168
173
  "https://openapi.kt.com/maps/geocode/GetAddrByGeocode?params="
169
174
  when "convert_coord"
170
175
  "https://openapi.kt.com/maps/etc/ConvertCoord?params="
176
+ when "addr_step_search"
177
+ "https://openapi.kt.com/maps/search/AddrStepSearch?params="
178
+ when "addr_nearest_position_search"
179
+ "https://openapi.kt.com/maps/search/AddrNearestPosSearch?params="
171
180
  else
172
181
  "https://openapi.kt.com/maps/geocode/GetGeocodeByAddr?params="
173
182
  end
@@ -175,7 +184,7 @@ module Geocoder::Lookup
175
184
 
176
185
 
177
186
  def query_url_params(query)
178
- case check_query_type(query)
187
+ case Olleh.check_query_type(query)
179
188
  when "route_search"
180
189
  JSON.generate({
181
190
  SX: query.options[:start_x],
@@ -197,8 +206,8 @@ module Geocoder::Lookup
197
206
  JSON.generate({
198
207
  x: query.text.first,
199
208
  y: query.text.last,
200
- inCoordType: self.coord_types[options[:coord_in]],
201
- outCoordType: self.coord_types[options[:coord_out]],
209
+ inCoordType: Olleh.coord_types[query.options[:coord_in]],
210
+ outCoordType: Olleh.coord_types[query.options[:coord_out]],
202
211
  timestamp: now
203
212
  })
204
213
  when "reverse_geocoding"
@@ -210,6 +219,18 @@ module Geocoder::Lookup
210
219
  isJibun: Olleh.include_jibun[query.options[:include_jibun]] || 0,
211
220
  timestamp: now
212
221
  })
222
+ when "addr_step_search"
223
+ JSON.generate({
224
+ l_Code: query.options[:l_code],
225
+ timestamp: now
226
+ })
227
+ when "addr_nearest_position_search"
228
+ JSON.generate({
229
+ px: query.options[:px],
230
+ py: query.options[:py],
231
+ radius: query.options[:radius],
232
+ timestamp: now
233
+ })
213
234
  else # geocoding
214
235
  JSON.generate({
215
236
  addr: URI.encode(query.sanitized_text),
@@ -219,25 +240,29 @@ module Geocoder::Lookup
219
240
  end
220
241
  end
221
242
 
243
+ def token
244
+ if a = configuration.api_key
245
+ if a.is_a?(Array)
246
+ return Base64.encode64("#{a.first}:#{a.last}").strip
247
+ end
248
+ end
249
+ end
250
+
251
+ def now
252
+ Time.now.strftime("%Y%m%d%H%M%S%L")
253
+ end
254
+
222
255
  def url_query_string(query)
223
256
  URI.encode(
224
257
  query_url_params(query)
225
258
  ).gsub(':','%3A').gsub(',','%2C').gsub('https%3A', 'https:')
226
259
  end
227
260
 
228
- def check_query_type(query)
229
- if !query.options.empty? && query.options.include?(:priority)
230
- "route_search"
231
- elsif query.reverse_geocode?
232
- "reverse_geocoding"
233
- elsif !query.options.empty? && query.options.include?(:coord_in)
234
- "convert_coord"
235
- else
236
- "geocoding"
237
- end
261
+ ##
262
+ # Need to delete timestamp from cache_key to hit cache
263
+ #
264
+ def cache_key(query)
265
+ Geocoder.config[:cache_prefix] + query_url(query).split('timestamp')[0]
238
266
  end
239
-
240
-
241
-
242
267
  end
243
268
  end
@@ -1,11 +1,8 @@
1
- require 'geocoder'
2
- require_relative "../../olleh"
1
+ require 'geocoder/results/base'
3
2
 
4
3
  module Geocoder::Result
5
4
  class Olleh < Base
6
5
 
7
- # NEED TO CHECK COORD SYSTEM
8
- #
9
6
  def latitude
10
7
  coordinates[0].to_f
11
8
  end
@@ -56,6 +53,22 @@ module Geocoder::Result
56
53
  [@data['X'], @data['Y']]
57
54
  end
58
55
 
56
+ #########
57
+ # methods for returning wgs coordiates from
58
+ #
59
+ def wgs_coordinates
60
+ return @data["WGS_COORDINATES"] if @data["WGS_COORDINATES"]
61
+ query = Geocoder::Query.new(
62
+ coordinates, {
63
+ coord_in: 'utmk',
64
+ coord_out: 'wgs84'
65
+ })
66
+ lookup = Geocoder::Lookup::Olleh.new
67
+ wgs = lookup.search(query).first.converted_coord
68
+ @data["WGS_COORDINATES"] = wgs
69
+ wgs
70
+ end
71
+
59
72
  def address_data
60
73
  @data['ADDRESS']
61
74
  end
@@ -64,18 +77,22 @@ module Geocoder::Result
64
77
  %w[bbox name confidence entityType]
65
78
  end
66
79
 
67
- #########
68
- # CONVERTED COORD TYPE
69
- def converted_coord_type
80
+ ##
81
+ # methods for converting coord system
82
+ #
83
+ def coord_type
70
84
  @data[1]['COORDTYPE']
71
85
  end
72
86
 
73
- def converted_coordinates
74
- [@data[1]['X'], @data[1]['Y']]
87
+ def converted_coord
88
+ [@data[1]["X"], @data[1]["Y"]]
75
89
  end
76
90
 
77
- #########
91
+ ##
78
92
  # methods for route search results
93
+ # total_time : minutes
94
+ # total_dist : meter
95
+ #
79
96
  def total_time
80
97
  @data[1]['ROUTE']['total_time']
81
98
  end
@@ -92,6 +109,60 @@ module Geocoder::Result
92
109
  @data[1]['ROUTE']['rg']
93
110
  end
94
111
 
112
+ ##
113
+ # methods for converting coord system
114
+ #
115
+ def coord_type
116
+ @data[1]['COORDTYPE']
117
+ end
118
+
119
+ def converted_coord
120
+ [@data[1]["X"], @data[1]["Y"]]
121
+ end
122
+
123
+ ##
124
+ # methods for parsing adress step search
125
+ #
126
+ # 법정동 - 시도
127
+ def addr_step_sido
128
+ @data["SIDO"]
129
+ end
130
+
131
+ ##
132
+ # 법정동 - 시군구
133
+ def addr_step_sigungu
134
+ @data["SIGUNGU"].gsub("+"," ")
135
+ end
136
+
137
+ def addr_step_dong
138
+ @data["DONG"]
139
+ end
140
+
141
+ def addr_step_li
142
+ @data["LI"]
143
+ end
144
+ ##
145
+ # 법정동코드
146
+ def addr_step_l_code
147
+ @data["L_CODE"]
148
+ end
149
+ ##
150
+ # 행정동코드
151
+ def addr_step_h_code
152
+ @data["H_CODE"]
153
+ end
154
+ ##
155
+ # 파란코드
156
+ def addr_step_p_code
157
+ @data["P_CODE"]
158
+ end
159
+
160
+ ##
161
+ # methods for parsing nearest position search
162
+ #
163
+ def position_address
164
+ "#{@data['SIDO']} #{@data['L_SIGUN_GU']} #{@data['L_DONG']} #{@data['GIBUN']}"
165
+ end
95
166
 
96
167
  response_attributes.each do |a|
97
168
  define_method a do
@@ -1,5 +1,5 @@
1
1
  module Geocoder
2
2
  module Olleh
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geocoder-olleh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaigouk Kim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-23 00:00:00.000000000 Z
11
+ date: 2015-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler