From: Nick Black Date: Tue, 1 May 2007 23:31:44 +0000 (+0000) Subject: now you can search openstreetmap.org/postcode/wc1e6bt X-Git-Tag: live~8491 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/bc01da3ef9bd03f54be7dd7047ab802f55ce0f5c now you can search openstreetmap.org/postcode/wc1e6bt --- diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index 8f0f80441..b352c315b 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -5,12 +5,34 @@ class GeocoderController < ApplicationController require 'rexml/document' def search - @postcode_arr = [] - unless params[:query][:postcode].empty? - postcode = params[:query][:postcode].upcase - escaped_postcode = postcode.sub(/\s/,'%20') + if params[:postcode] + unless params[:postcode].empty? + postcode = params[:postcode] + check_postcode(postcode) + return + end + end + if params[:query][:postcode] + unless params[:query][:postcode].empty? + postcode =params[:query][:postcode] + check_postcode(postcode) + return + end + end + if params[:query][:place_name] + @place_name = params[:query][:place_name] + redirect_to :controller => 'geocoder', :action => 'results', :params => {:place_name => @place_name} + end + end + + def check_postcode(p) + + @postcode_arr = [] + postcode = p.upcase + escaped_postcode = postcode.sub(/\s/,'%20') + begin if postcode.match(/(^\d{5}$)|(^\d{5}-\d{4}$)/) # Its a zip code - ask geocoder.us # (They have a non commerical use api) @@ -90,12 +112,10 @@ class GeocoderController < ApplicationController redirect_to "/index.html?error=unknown_postcode_or_zip" return end + rescue + #Its likely that an api is down + redirect_to "/index.html?error=api_dpwn" end - - if params[:query][:place_name] - @place_name = params[:query][:place_name] - redirect_to :controller => 'geocoder', :action => 'results', :params => {:place_name => @place_name} - end end def results