Make the multi-get calls throw 400 errors on invalid input

Also refactor ways and relations to use the same structure as nodes
This commit is contained in:
Paul Norman 2013-08-03 03:20:46 -07:00 committed by Tom Hughes
parent ec9634d865
commit a1a5706203
3 changed files with 31 additions and 23 deletions

View file

@ -64,6 +64,10 @@ class NodeController < ApplicationController
# Dump the details on many nodes whose ids are given in the "nodes" parameter. # Dump the details on many nodes whose ids are given in the "nodes" parameter.
def nodes def nodes
if not params['nodes']
raise OSM::APIBadUserInput.new("The parameter nodes is required, and must be of the form nodes=id[,id[,id...]]")
end
ids = params['nodes'].split(',').collect { |n| n.to_i } ids = params['nodes'].split(',').collect { |n| n.to_i }
if ids.length == 0 if ids.length == 0

View file

@ -130,9 +130,16 @@ class RelationController < ApplicationController
end end
def relations def relations
if not params['relations']
raise OSM::APIBadUserInput.new("The parameter relations is required, and must be of the form relations=id[,id[,id...]]")
end
ids = params['relations'].split(',').collect { |w| w.to_i } ids = params['relations'].split(',').collect { |w| w.to_i }
if ids.length > 0 if ids.length == 0
raise OSM::APIBadUserInput.new("No relations were given to search for")
end
doc = OSM::API.new.get_xml_doc doc = OSM::API.new.get_xml_doc
Relation.find(ids).each do |relation| Relation.find(ids).each do |relation|
@ -140,9 +147,6 @@ class RelationController < ApplicationController
end end
render :text => doc.to_s, :content_type => "text/xml" render :text => doc.to_s, :content_type => "text/xml"
else
render :text => "You need to supply a comma separated list of ids.", :status => :bad_request
end
end end
def relations_for_way def relations_for_way

View file

@ -84,13 +84,16 @@ class WayController < ApplicationController
end end
def ways def ways
begin if not params['ways']
ids = params['ways'].split(',').collect { |w| w.to_i } raise OSM::APIBadUserInput.new("The parameter ways is required, and must be of the form ways=id[,id[,id...]]")
rescue end
ids = []
ids = params['ways'].split(',').collect { |w| w.to_i }
if ids.length == 0
raise OSM::APIBadUserInput.new("No ways were given to search for")
end end
if ids.length > 0
doc = OSM::API.new.get_xml_doc doc = OSM::API.new.get_xml_doc
Way.find(ids).each do |way| Way.find(ids).each do |way|
@ -98,9 +101,6 @@ class WayController < ApplicationController
end end
render :text => doc.to_s, :content_type => "text/xml" render :text => doc.to_s, :content_type => "text/xml"
else
render :text => "", :status => :bad_request
end
end end
## ##