module Postcodes::Lookup
Public Instance Methods
lookup(*postcodes)
click to toggle source
# File lib/postcodes_io/lookup.rb, line 9 def lookup(*postcodes) postcodes.flatten! if postcodes.count > 1 lookup_multiple postcodes else lookup_postcode postcodes.first end end
Private Instance Methods
lookup_multiple(postcodes)
click to toggle source
# File lib/postcodes_io/lookup.rb, line 32 def lookup_multiple(postcodes) payload = {postcodes: postcodes.map {|p| remove_whitespace p}} response = Excon.post( "https://api.postcodes.io/postcodes", body: payload.to_json, headers: {'Content-Type' => 'application/json'} ) process_response(response) do |r| return r['result'].map do |result| Postcodes::Postcode.new(result['result']) end end end
lookup_postcode(postcode)
click to toggle source
# File lib/postcodes_io/lookup.rb, line 21 def lookup_postcode(postcode) postcode = remove_whitespace postcode response = Excon.get("https://api.postcodes.io/postcodes/#{postcode}") unless response.status == 404 parsed_response = JSON.parse(response.body) return Postcodes::Postcode.new(parsed_response['result']) end return nil end
process_response(response) { |parse| ... }
click to toggle source
# File lib/postcodes_io/lookup.rb, line 51 def process_response(response, &block) unless response.status == 404 yield JSON.parse(response.body) end nil end
remove_whitespace(string)
click to toggle source
# File lib/postcodes_io/lookup.rb, line 47 def remove_whitespace(string) string.gsub(/\s+/, '') # remove any whitespace. m1 1ab => m11ab end