class NaverMap

Constants

GEOCODE_REQUEST_URL
REVERSE_GEOCODE_URL
VERSION

Attributes

client_id[R]
client_secret[R]

Public Class Methods

new(client_id, client_secret) click to toggle source
# File lib/naver_map.rb, line 12
def initialize(client_id, client_secret)
  @client_id = client_id
  @client_secret = client_secret

  validate!
end

Public Instance Methods

address_to_coordinates(address) click to toggle source
# File lib/naver_map.rb, line 19
def address_to_coordinates(address)
  response = query(GEOCODE_REQUEST_URL, address).body
  extract_result(response, :point) # Second argument should be a symbol
end
coordinates_to_address(axis_x, axis_y) click to toggle source
# File lib/naver_map.rb, line 24
def coordinates_to_address(axis_x, axis_y)
  response = query(REVERSE_GEOCODE_URL, axis_x, axis_y).body
  extract_result(response, :address)
end
to_s() click to toggle source
# File lib/naver_map.rb, line 29
def to_s
  "Client ID: #{client_id}, Client Secret: #{client_secret}"
end

Private Instance Methods

extract_result(content, result_type) click to toggle source
# File lib/naver_map.rb, line 60
def extract_result(content, result_type)
  result_json  = render_json(content)

  if result_json[:result]
    result_items = result_json[:result][:items]

    return result_items.first[result_type] unless result_items.size > 1
    result_items.map { |item| item[result_type] }
  else
    result_json
  end
end
query(url, *params) click to toggle source
# File lib/naver_map.rb, line 50
def query(url, *params)
  request_to_naver(url, params)
rescue RestClient::ExceptionWithResponse => err
  err.response
end
render_json(body) click to toggle source
# File lib/naver_map.rb, line 56
def render_json(body)
  JSON.parse(body, symbolize_names: true)
end
request_to_naver(url, *params) click to toggle source
# File lib/naver_map.rb, line 44
def request_to_naver(url, *params)
  RestClient.get(url, params: { query: params.join(',') },
                 'X-Naver-Client-Id': client_id,
                 'X-Naver-Client-Secret': client_secret)
end
valid_keys?() click to toggle source
# File lib/naver_map.rb, line 39
def valid_keys?
  client_id.is_a?(String) && client_id.length == 20 &&
    client_secret.is_a?(String) && client_secret.length == 10
end
validate!() click to toggle source
# File lib/naver_map.rb, line 35
def validate!
  raise InvalidKeysError.new(client_id, client_secret) unless valid_keys?
end