change mime type and reformat search controller

This commit is contained in:
Steve Coast 2007-04-18 11:25:59 +00:00
parent 529279d227
commit c91b86a1d1
8 changed files with 51 additions and 51 deletions

View file

@ -7,7 +7,7 @@ class ApiController < ApplicationController
MAX_REQUEST_AREA = 0.25 MAX_REQUEST_AREA = 0.25
def map def map
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
# Figure out the bbox # Figure out the bbox
bbox = params['bbox'] bbox = params['bbox']
unless bbox and bbox.count(',') == 3 unless bbox and bbox.count(',') == 3

View file

@ -5,7 +5,7 @@ class NodeController < ApplicationController
after_filter :compress_output after_filter :compress_output
def create def create
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
if request.put? if request.put?
node = nil node = nil
begin begin
@ -35,7 +35,7 @@ class NodeController < ApplicationController
end end
def rest def rest
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
unless Node.exists?(params[:id]) unless Node.exists?(params[:id])
render :nothing => true, :status => 404 render :nothing => true, :status => 404
return return
@ -89,7 +89,7 @@ class NodeController < ApplicationController
end end
def nodes def nodes
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
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
nodelist = Node.find(ids) nodelist = Node.find(ids)

View file

@ -1,7 +1,7 @@
class OldNodeController < ApplicationController class OldNodeController < ApplicationController
def history def history
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
node = Node.find(params[:id]) node = Node.find(params[:id])
unless node unless node

View file

@ -1,7 +1,7 @@
class OldSegmentController < ApplicationController class OldSegmentController < ApplicationController
def history def history
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
segment = Segment.find(params[:id]) segment = Segment.find(params[:id])
unless segment unless segment

View file

@ -1,6 +1,6 @@
class OldWayController < ApplicationController class OldWayController < ApplicationController
def history def history
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
way = Way.find(params[:id]) way = Way.find(params[:id])
unless way unless way

View file

@ -22,17 +22,17 @@ class SearchController < ApplicationController
def do_search(do_ways,do_segments,do_nodes) def do_search(do_ways,do_segments,do_nodes)
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
type = params['type'] type = params['type']
value = params['value'] value = params['value']
unless type or value unless type or value
name = params['name'] name = params['name']
if name if name
type = 'name' type = 'name'
value = name value = name
end end
end end
way_ids = Array.new way_ids = Array.new
ways = Array.new ways = Array.new
@ -43,49 +43,49 @@ class SearchController < ApplicationController
cond_tbl = Array.new cond_tbl = Array.new
sql = '1=1' sql = '1=1'
if type if type
sql += ' AND k=?' sql += ' AND k=?'
cond_tbl += [type] cond_tbl += [type]
end end
if value if value
sql += ' AND v=?' sql += ' AND v=?'
cond_tbl += [value] cond_tbl += [value]
end end
cond_tbl = [sql] + cond_tbl cond_tbl = [sql] + cond_tbl
# Matching for tags column # Matching for tags column
if type and value if type and value
cond_tags = ['tags LIKE ? OR tags LIKE ? OR tags LIKE ? OR tags LIKE ?', cond_tags = ['tags LIKE ? OR tags LIKE ? OR tags LIKE ? OR tags LIKE ?',
''+type+'='+value+'', ''+type+'='+value+'',
''+type+'='+value+';%', ''+type+'='+value+';%',
'%;'+type+'='+value+';%', '%;'+type+'='+value+';%',
'%;'+type+'='+value+'' ] '%;'+type+'='+value+'' ]
elsif type elsif type
cond_tags = ['tags LIKE ? OR tags LIKE ?', cond_tags = ['tags LIKE ? OR tags LIKE ?',
''+type+'=%', ''+type+'=%',
'%;'+type+'=%' ] '%;'+type+'=%' ]
elsif value elsif value
cond_tags = ['tags LIKE ? OR tags LIKE ?', cond_tags = ['tags LIKE ? OR tags LIKE ?',
'%='+value+';%', '%='+value+';%',
'%='+value+'' ] '%='+value+'' ]
else else
cond_tags = ['1=1'] cond_tags = ['1=1']
end end
# First up, look for the ids of the ways we want
if do_ways # First up, look for the ids of the ways we want
ways_tmp = WayTag.find(:all, :conditions => cond_tbl) if do_ways
way_ids = ways_tmp.collect {|way| way.id } ways_tmp = WayTag.find(:all, :conditions => cond_tbl)
way_ids = ways_tmp.collect {|way| way.id }
end end
# Now, segments matching # Now, segments matching
if do_segments if do_segments
segs = Segment.find(:all, :conditions => cond_tags) segs = Segment.find(:all, :conditions => cond_tags)
end end
# Now, nodes # Now, nodes
if do_nodes if do_nodes
nodes = Node.find(:all, :conditions => cond_tags) nodes = Node.find(:all, :conditions => cond_tags)
end end
# Get the remaining objects: # Get the remaining objects:
@ -93,22 +93,22 @@ class SearchController < ApplicationController
ways = Way.find(way_ids) ways = Way.find(way_ids)
# Fetch any segments needed for our ways (only have matching segments so far) # Fetch any segments needed for our ways (only have matching segments so far)
seg_ids = Array.new seg_ids = Array.new
ways.each do |way| ways.each do |way|
seg_ids += way.segments seg_ids += way.segments
end end
segments += Segment.find(seg_ids) segments += Segment.find(seg_ids)
# Fetch any nodes needed for our segments (only have matching nodes so far) # Fetch any nodes needed for our segments (only have matching nodes so far)
node_ids = Array.new node_ids = Array.new
segments.each do |seg| segments.each do |seg|
node_ids += seg.node_a node_ids += seg.node_a
node_ids += seg.node_b node_ids += seg.node_b
end end
nodes += Node.find(node_ids) nodes += Node.find(node_ids)
# Print # Print
doc = OSM::API.get_xml_doc doc = OSM::API.get_xml_doc
nodes.each do |node| nodes.each do |node|
doc.root << node.to_xml_node() doc.root << node.to_xml_node()

View file

@ -5,7 +5,7 @@ class SegmentController < ApplicationController
after_filter :compress_output after_filter :compress_output
def create def create
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
if request.put? if request.put?
segment = Segment.from_xml(request.raw_post, true) segment = Segment.from_xml(request.raw_post, true)
@ -36,7 +36,7 @@ class SegmentController < ApplicationController
end end
def rest def rest
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
unless Segment.exists?(params[:id]) unless Segment.exists?(params[:id])
render :nothing => true, :status => 404 render :nothing => true, :status => 404
return return
@ -81,7 +81,7 @@ class SegmentController < ApplicationController
end end
def segments def segments
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
ids = params['segments'].split(',').collect {|s| s.to_i } ids = params['segments'].split(',').collect {|s| s.to_i }
if ids.length > 0 if ids.length > 0
segmentlist = Segment.find(ids) segmentlist = Segment.find(ids)

View file

@ -86,7 +86,7 @@ class WayController < ApplicationController
end end
def ways def ways
response.headers["Content-Type"] = 'application/xml' response.headers["Content-Type"] = 'text/xml'
ids = params['ways'].split(',').collect {|w| w.to_i } ids = params['ways'].split(',').collect {|w| w.to_i }
if ids.length > 0 if ids.length > 0
waylist = Way.find(ids) waylist = Way.find(ids)