class PostcodeValidation::Gateway::PCAAddressList
Constants
- KEY
Public Instance Methods
query(search_term:, country:, more_results_id: nil)
click to toggle source
# File lib/postcode_validation/gateway/pca_address_list.rb, line 11 def query(search_term:, country:, more_results_id: nil) address_list_for_postcode(country, search_term, more_results_id).map do |row| raise PCARequestError, error_message(row) if row.key?('Error') if row['Type'] == 'Postcode' self.class.new.query( country: country, search_term: search_term, more_results_id: row['Id'] ) elsif row['Type'] == 'Address' PostcodeValidation::Domain::Address.new(row: row, key: KEY) end end.compact.flatten end
Private Instance Methods
address_list_for_postcode(country, search_term, more_results_id)
click to toggle source
# File lib/postcode_validation/gateway/pca_address_list.rb, line 33 def address_list_for_postcode(country, search_term, more_results_id) JSON.parse( self.class.get( '/Capture/Interactive/Find/1.00/json.ws', lookup_parameters(country, search_term, more_results_id) ).body ) end
error_message(row)
click to toggle source
# File lib/postcode_validation/gateway/pca_address_list.rb, line 29 def error_message(row) "#{row['Error']} #{row['Cause']} #{row['Resolution']}" end
lookup_parameters(country, search_term, more_results_id)
click to toggle source
# File lib/postcode_validation/gateway/pca_address_list.rb, line 42 def lookup_parameters(country, search_term, more_results_id) result = { query: { Countries: country, Key: KEY, Text: search_term, Limit: 8 } } result[:query].merge!(Container: more_results_id) unless more_results_id.nil? result end