X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dbe165bbb3d6eda37d9579f1ac767599f9055607..96c91757fc23023f2d56019252a9f89f2482266f:/app/controllers/api_controller.rb diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 7bf8f0499..eb59a8a8d 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -2,7 +2,6 @@ class ApiController < ApplicationController skip_before_action :verify_authenticity_token before_action :check_api_readable, :except => [:capabilities] before_action :setup_user_auth, :only => [:permissions] - after_action :compress_output around_action :api_call_handle_error, :api_call_timeout # Get an XML response containing a list of tracepoints that have been uploaded @@ -126,27 +125,25 @@ class ApiController < ApplicationController return end - @nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(MAX_NUMBER_OF_NODES + 1) + nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(MAX_NUMBER_OF_NODES + 1) - node_ids = @nodes.collect(&:id) + node_ids = nodes.collect(&:id) if node_ids.length > MAX_NUMBER_OF_NODES report_error("You requested too many nodes (limit is #{MAX_NUMBER_OF_NODES}). Either request a smaller area, or use planet.osm") return end - if node_ids.length == 0 - render :text => "", :content_type => "text/xml" - return - end doc = OSM::API.new.get_xml_doc # add bounds - doc.root << bbox.add_bounds_to(XML::Node.new "bounds") + doc.root << bbox.add_bounds_to(XML::Node.new("bounds")) # 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) @@ -155,23 +152,20 @@ 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 - @nodes += Node.includes(:node_tags).find(nodes_to_fetch) + unless nodes_to_fetch.empty? + nodes += Node.includes(:node_tags).find(nodes_to_fetch) end visible_nodes = {} changeset_cache = {} user_display_name_cache = {} - @nodes.each do |node| + nodes.each do |node| if node.visible? doc.root << node.to_xml_node(changeset_cache, user_display_name_cache) visible_nodes[node.id] = node @@ -263,8 +257,8 @@ class ApiController < ApplicationController api = XML::Node.new "api" version = XML::Node.new "version" - version["minimum"] = "#{API_VERSION}" - version["maximum"] = "#{API_VERSION}" + version["minimum"] = API_VERSION.to_s + version["maximum"] = API_VERSION.to_s api << version area = XML::Node.new "area" area["maximum"] = MAX_REQUEST_AREA.to_s @@ -306,10 +300,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 @user ClientApplication.all_permissions else []