Class: Geocoder::Lookup::SensisBase

Inherits:
Base
  • Object
show all
Defined in:
lib/geocoder/sensis.rb

Overview

Actual implementation

Direct Known Subclasses

SensisStructured, SensisUnstructured

Instance Method Summary collapse

Instance Method Details

#make_api_request(query) ⇒ Object

Override the base method because it’s hard-coded to use Get. TODO: Raise PR upstream to allow other request methods.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/geocoder/sensis.rb', line 44

def make_api_request(query)
  timeout(configuration.timeout) do
    uri = URI.parse(query_url(query))
    http_client.start(uri.host, uri.port, :use_ssl => true) do |client|
      req = Net::HTTP::Post.new(uri.request_uri, configuration.http_headers)
      req.basic_auth(uri.user, uri.password) if uri.user and uri.password
      req.body = sensis_query_json(query)
      req.content_type = 'application/json'
      req['X-Auth-Token'] = configuration.api_key[0]
      req['X-Auth-Password'] = configuration.api_key[1]
      client.request(req)
    end
  end
end

#protocolObject



29
30
31
# File 'lib/geocoder/sensis.rb', line 29

def protocol
  "https"
end

#query_url(query) ⇒ Object



25
26
27
# File 'lib/geocoder/sensis.rb', line 25

def query_url(query)
  "https://#{sensis_host}/v2/service/geocode/#{request_type}" + url_query_string(query)
end

#required_api_key_partsObject



21
22
23
# File 'lib/geocoder/sensis.rb', line 21

def required_api_key_parts
  ["auth token", "auth password"]
end

#result_classObject



59
60
61
# File 'lib/geocoder/sensis.rb', line 59

def result_class
  ::Geocoder::Result::Sensis
end

#results(query) ⇒ Object

Raises:

  • (Exception)


33
34
35
36
37
38
# File 'lib/geocoder/sensis.rb', line 33

def results(query)
  doc = fetch_data(query)
  return [] unless doc
  raise Exception.new('Incorrect API key') if doc["code"] == 401
  doc["results"]
end