X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/8fe18995964717ff6f88858291c6f464cc40397f..ae4487921350e141efed42fdf7cd3fd70d72bc97:/app/controllers/api_controller.rb?ds=inline diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index d158019f3..c6cc3ba5f 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -100,7 +100,7 @@ class ApiController < ApplicationController response.headers["Content-Disposition"] = "attachment; filename=\"tracks.gpx\"" - render :text => doc.to_s, :content_type => "text/xml" + render :xml => doc.to_s end # This is probably the most common call of all. It is used for getting the @@ -141,7 +141,9 @@ class ApiController < ApplicationController # get ways # find which ways are needed ways = [] - if node_ids.length > 0 + if node_ids.empty? + list_of_way_nodes = [] + else way_nodes = WayNode.where(:node_id => node_ids) way_ids = way_nodes.collect { |way_node| way_node.id[0] } ways = Way.preload(:way_nodes, :way_tags).find(way_ids) @@ -150,15 +152,12 @@ class ApiController < ApplicationController way.way_nodes.collect(&:node_id) end list_of_way_nodes.flatten! - - else - list_of_way_nodes = [] end # - [0] in case some thing links to node 0 which doesn't exist. Shouldn't actually ever happen but it does. FIXME: file a ticket for this nodes_to_fetch = (list_of_way_nodes.uniq - node_ids) - [0] - if nodes_to_fetch.length > 0 + unless nodes_to_fetch.empty? nodes += Node.includes(:node_tags).find(nodes_to_fetch) end @@ -194,12 +193,12 @@ class ApiController < ApplicationController # this "uniq" may be slightly inefficient; it may be better to first collect and output # all node-related relations, then find the *not yet covered* way-related ones etc. relations.uniq.each do |relation| - doc.root << relation.to_xml_node(nil, changeset_cache, user_display_name_cache) + doc.root << relation.to_xml_node(changeset_cache, user_display_name_cache) end response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\"" - render :text => doc.to_s, :content_type => "text/xml" + render :xml => doc.to_s end # Get a list of the tiles that have changed within a specified time @@ -242,9 +241,9 @@ class ApiController < ApplicationController doc.root << changes - render :text => doc.to_s, :content_type => "text/xml" + render :xml => doc.to_s else - render :text => "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours", :status => :bad_request + render :plain => "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours", :status => :bad_request end end @@ -264,6 +263,9 @@ class ApiController < ApplicationController area = XML::Node.new "area" area["maximum"] = MAX_REQUEST_AREA.to_s api << area + notearea = XML::Node.new "note_area" + notearea["maximum"] = MAX_NOTE_REQUEST_AREA.to_s + api << notearea tracepoints = XML::Node.new "tracepoints" tracepoints["per_page"] = TRACEPOINTS_PER_PAGE.to_s api << tracepoints @@ -292,7 +294,7 @@ class ApiController < ApplicationController policy << blacklist doc.root << policy - render :text => doc.to_s, :content_type => "text/xml" + render :xml => doc.to_s end # External apps that use the api are able to query which permissions @@ -301,10 +303,9 @@ class ApiController < ApplicationController # * if authenticated via basic auth all permissions are granted, so the list will contain all permissions. # * unauthenticated users have no permissions, so the list will be empty. def permissions - @permissions = case - when current_token.present? + @permissions = if current_token.present? ClientApplication.all_permissions.select { |p| current_token.read_attribute(p) } - when @user + elsif current_user ClientApplication.all_permissions else []