class What3Words::API
Document the responsibility of the class
Constants
- BASE_URL
- ENDPOINTS
- REGEX_3_WORD_ADDRESS
- REGEX_STRICT
Attributes
key[R]
Public Class Methods
new(params)
click to toggle source
# File lib/what3words/api.rb, line 29 def initialize(params) @key = params.fetch(:key) end
Public Instance Methods
autosuggest(addr, lang, focus = {}, clip = {}, params = {})
click to toggle source
# File lib/what3words/api.rb, line 60 def autosuggest(addr, lang, focus = {}, clip = {}, params = {}) request_params = assemble_autosuggest_request_params(addr, lang, focus, clip, params) response = request! :autosuggest, request_params response end
autosuggest_ml(addr, lang, focus = {}, clip = {}, params = {})
click to toggle source
# File lib/what3words/api.rb, line 67 def autosuggest_ml(addr, lang, focus = {}, clip = {}, params = {}) request_params = assemble_autosuggest_request_params(addr, lang, focus, clip, params) response = request! :autosuggest_ml, request_params response end
deep_symbolize_keys(i)
click to toggle source
# File lib/what3words/api.rb, line 170 def deep_symbolize_keys(i) if i.is_a? Hash ni = {} # rubocop:disable Metrics/LineLength i.each { |k, v| ni[k.respond_to?(:to_sym) ? k.to_sym : k] = deep_symbolize_keys(v) } # rubocop:enable Metrics/LineLength elsif i.is_a? Array ni = i.map(&method(:deep_symbolize_keys)) else ni = i end ni end
endpoint(name)
click to toggle source
# File lib/what3words/api.rb, line 190 def endpoint(name) base_url + ENDPOINTS.fetch(name) end
forward(words, params = {})
click to toggle source
# File lib/what3words/api.rb, line 35 def forward(words, params = {}) words_string = get_words_string words request_params = assemble_forward_request_params(words_string, params) response = request! :forward, request_params response end
grid(bbox, params = {})
click to toggle source
# File lib/what3words/api.rb, line 48 def grid(bbox, params = {}) request_params = assemble_grid_request_params(bbox, params) response = request! :grid, request_params response end
languages()
click to toggle source
# File lib/what3words/api.rb, line 54 def languages request_params = assemble_common_request_params({}) response = request! :languages, request_params response end
reverse(position, params = {})
click to toggle source
# File lib/what3words/api.rb, line 42 def reverse(position, params = {}) request_params = assemble_reverse_request_params(position, params) response = request! :reverse, request_params response end
standardblend(addr, lang, focus = {}, params = {})
click to toggle source
# File lib/what3words/api.rb, line 74 def standardblend(addr, lang, focus = {}, params = {}) request_params = assemble_standardblend_request_params(addr, lang, focus, params) response = request! :standardblend, request_params response end
standardblend_ml(addr, lang, focus = {}, params = {})
click to toggle source
# File lib/what3words/api.rb, line 81 def standardblend_ml(addr, lang, focus = {}, params = {}) request_params = assemble_standardblend_request_params(addr, lang, focus, params) response = request! :standardblend_ml, request_params response end
Private Instance Methods
assemble_autosuggest_request_params(addr, lang, focus, clip, params)
click to toggle source
# File lib/what3words/api.rb, line 115 def assemble_autosuggest_request_params(addr, lang, focus, clip, params) h = { addr: addr } h[:lang] = lang h[:focus] = focus.join(',') if focus.respond_to? :join h[:clip] = clip if clip.respond_to? :to_str h.merge(assemble_common_request_params(params)) end
assemble_common_request_params(params)
click to toggle source
# File lib/what3words/api.rb, line 88 def assemble_common_request_params(params) h = { key: key } h[:lang] = params[:lang] if params[:lang] h[:format] = params[:format] if params[:format] h[:display] = params[:display] if params[:display] h end
assemble_forward_request_params(words_string, params)
click to toggle source
# File lib/what3words/api.rb, line 97 def assemble_forward_request_params(words_string, params) h = { addr: words_string } h.merge(assemble_common_request_params(params)) end
assemble_grid_request_params(bbox, params)
click to toggle source
# File lib/what3words/api.rb, line 103 def assemble_grid_request_params(bbox, params) h = { bbox: bbox } h.merge(assemble_common_request_params(params)) end
assemble_reverse_request_params(position, params)
click to toggle source
# File lib/what3words/api.rb, line 109 def assemble_reverse_request_params(position, params) h = { coords: position.join(',') } h.merge(assemble_common_request_params(params)) end
assemble_standardblend_request_params(addr, lang, focus, params)
click to toggle source
# File lib/what3words/api.rb, line 124 def assemble_standardblend_request_params(addr, lang, focus, params) h = { addr: addr } h[:lang] = lang h[:focus] = focus.join(',') if focus.respond_to? :join h.merge(assemble_common_request_params(params)) end
base_url()
click to toggle source
# File lib/what3words/api.rb, line 185 def base_url BASE_URL end
check_words(words)
click to toggle source
# File lib/what3words/api.rb, line 162 def check_words(words) unless REGEX_3_WORD_ADDRESS.match(words) raise WordError, "#{words} is not a valid 3 word address" end words end
get_words_string(words)
click to toggle source
# File lib/what3words/api.rb, line 150 def get_words_string(words) if words.respond_to? :to_str w = words elsif words.respond_to? :join w = words.join('.') else raise Error, "Cannot get words string for #{words.inspect}" end check_words w end
request!(endpoint_name, params)
click to toggle source
# File lib/what3words/api.rb, line 132 def request!(endpoint_name, params) # puts endpoint_name.inspect # puts params.inspect begin response = RestClient.get endpoint(endpoint_name), params: params rescue => e response = e.response end # puts '#{response.to_str}' # puts 'Response status: #{response.code}' response = JSON.parse(response.body) if response['code'].to_s.strip != '' raise ResponseError, "#{response['code']}: #{response['message']}" end deep_symbolize_keys(response) end