class ApiPostcodeNl::API
Constants
- BASE_URL
- NIL_RESULT_CODE
Public Class Methods
address(postcode, house_number, house_number_addition = nil)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 66 def address(postcode, house_number, house_number_addition = nil) if house_number_addition.blank? && house_number # attempt to get a house_number_addition from the house number house_number = house_number.to_s number = house_number.split(/[^0-9]/)[0] house_number_addition = house_number.sub(number, "") house_number = number end if postcode.blank? || house_number.blank? return nil end key = cache_key(postcode, house_number, house_number_addition) if cache && result = cache.read(key) return nil if result == NIL_RESULT_CODE return result end result = parse(send(postcode, house_number, house_number_addition)) cache.write(key, result ? result : NIL_RESULT_CODE, :expires_in => 1.week) if cache result end
cache()
click to toggle source
# File lib/api_postcode_nl/api.rb, line 96 def cache @@cache ||= nil end
cache=(cache)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 92 def cache=(cache) @@cache = cache end
cache_key(postcode, house_number, house_number_addition)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 62 def cache_key(postcode, house_number, house_number_addition) "api_postcode_nl_#{postcode.to_s.downcase}_#{house_number.to_s.downcase}_#{house_number_addition.to_s.downcase}" end
get_url(postcode, house_number, house_number_addition = nil)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 13 def get_url(postcode, house_number, house_number_addition = nil) postcode, house_number, house_number_addition = [postcode, house_number, house_number_addition].map{|c| c.to_s.delete(" ")} "#{BASE_URL}/#{postcode}/#{house_number}/#{house_number_addition}" end
handle_errors(result)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 33 def handle_errors(result) if result.is_a?(Net::HTTPNotFound) raise ApiPostcodeNl::InvalidPostcodeException, JSON.parse(result.body)["exception"] end #puts result.code.class #puts result.message #puts result.body end
key()
click to toggle source
# File lib/api_postcode_nl/api.rb, line 100 def key @@key end
key=(value)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 104 def key=(value) @@key = value end
parse(response)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 42 def parse(response) result = {} parsed_response = JSON.parse(response) { street_name: parsed_response["street"], house_number: parsed_response["houseNumber"], postcode: parsed_response["postcode"], city: parsed_response["city"], municipality: parsed_response["municipality"], province: parsed_response["province"], latitude: parsed_response["latitude"], longitude: parsed_response["longitude"], address_type: parsed_response["addressType"], purpose: parsed_response["purpose"], area: parsed_response["surfaceArea"], house_number_additions: parsed_response["houseNumberAdditions"], house_number_addition: parsed_response["houseNumberAddition"] } end
secret()
click to toggle source
# File lib/api_postcode_nl/api.rb, line 108 def secret @@secret end
secret=(value)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 112 def secret=(value) @@secret = value end
send(postcode, house_number, house_number_addition = nil)
click to toggle source
# File lib/api_postcode_nl/api.rb, line 18 def send(postcode, house_number, house_number_addition = nil) uri = URI.parse(get_url(postcode, house_number, house_number_addition)) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.path) request.basic_auth key, secret result = http.start {|http| http.request(request) } handle_errors(result) result.body end