X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/d0d396f9b68e276c8be1851c036dd64827982907..412472212be935f8dbcd35b2d94c63466a90d218:/app/controllers/api_controller.rb
diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb
index c17ff6798..6ede9ebe8 100644
--- a/app/controllers/api_controller.rb
+++ b/app/controllers/api_controller.rb
@@ -79,8 +79,9 @@ class ApiController < ApplicationController
exit!
end
- render :text => doc.to_s, :content_type => "text/xml"
+ response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\""
+ render :text => doc.to_s, :content_type => "text/xml"
end
def map
@@ -119,7 +120,7 @@ class ApiController < ApplicationController
return
end
if node_ids.length == 0
- render :text => "", :content_type => "text/xml"
+ render :text => "", :content_type => "text/xml"
return
end
@@ -169,20 +170,8 @@ class ApiController < ApplicationController
end
end
- # collect relationships. currently done in one big block at the end;
- # may need to move this upwards if people want automatic completion of
- # relationships, i.e. deliver referenced objects like we do with ways...
- relations = Array.new
- if visible_nodes.length > 0
- relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
- "e.visible=1 and " +
- "em.id = e.id and em.member_type='node' and em.member_id in (#{visible_nodes.keys.join(',')})")
- end
- if way_ids.length > 0
- relations += Relation.find_by_sql("select e.* from current_relations e,current_relation_members em where " +
- "e.visible=1 and " +
- "em.id = e.id and em.member_type='way' and em.member_id in (#{way_ids.join(',')})")
- end
+ relations = Relation.find_for_nodes_and_ways(visible_nodes.keys, way_ids)
+
# we do not normally return the "other" partners referenced by an relation,
# e.g. if we return a way A that is referenced by relation X, and there's
# another way B also referenced, that is not returned. But we do make
@@ -201,6 +190,8 @@ class ApiController < ApplicationController
doc.root << relation.to_xml_node(user_display_name_cache)
end
+ response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\""
+
render :text => doc.to_s, :content_type => "text/xml"
#exit when we have too many requests