Class: UkPostcodesIo::MultiLookup

Inherits:
Lookup
  • Object
show all
Defined in:
lib/uk_postcodes_io/multi_lookup.rb

Constant Summary

Constants inherited from Lookup

Lookup::API_URL

Instance Attribute Summary collapse

Attributes inherited from Lookup

#postcode

Instance Method Summary collapse

Methods inherited from Lookup

#body, #error, #status, #success?

Constructor Details

#initialize(postcodes) ⇒ MultiLookup

Returns a new instance of MultiLookup.



5
6
7
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 5

def initialize(postcodes)
  @postcodes = postcodes
end

Instance Attribute Details

#postcodesObject (readonly)

Returns the value of attribute postcodes.



4
5
6
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 4

def postcodes
  @postcodes
end

Instance Method Details

#build_data_from_body_resultObject



13
14
15
16
17
18
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 13

def build_data_from_body_result
  return unless body['result']
  body['result'].each_with_object({}) do |item, hash|
    hash[item['query']] = item['result'] ? OpenStruct.new(item['result']) : nil
  end
end

#dataObject



9
10
11
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 9

def data
  @data ||= build_data_from_body_result
end

#make_requestObject



28
29
30
31
32
33
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 28

def make_request
  request.body = { postcodes: postcodes }.to_json
  Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(request)
  end
end

#requestObject



24
25
26
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 24

def request
  @request ||= Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
end

#responseObject



20
21
22
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 20

def response
  @response ||= make_request
end

#uriObject



35
36
37
# File 'lib/uk_postcodes_io/multi_lookup.rb', line 35

def uri
  URI(API_URL)
end