X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/ef7f3d800cbdd49b692df10d312e5fd880e2e938..8368f903101031389c7153623c8858a7a6f2de84:/app/controllers/api_controller.rb diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 1b9a1ad69..379bb7e86 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,15 +1,14 @@ class ApiController < ApplicationController - skip_before_filter :verify_authenticity_token - before_filter :check_api_readable, :except => [:capabilities] - before_filter :setup_user_auth, :only => [:permissions] - after_filter :compress_output - around_filter :api_call_handle_error, :api_call_timeout + skip_before_action :verify_authenticity_token + before_action :check_api_readable, :except => [:capabilities] + before_action :setup_user_auth, :only => [:permissions] + around_action :api_call_handle_error, :api_call_timeout # Get an XML response containing a list of tracepoints that have been uploaded # within the specified bounding box, and in the specified page. def trackpoints # retrieve the page number - page = params['page'].to_s.to_i + page = params["page"].to_s.to_i unless page >= 0 report_error("Page number must be greater than or equal to 0") @@ -25,7 +24,7 @@ class ApiController < ApplicationController bbox = BoundingBox.from_bbox_params(params) bbox.check_boundaries bbox.check_size - rescue Exception => err + rescue StandardError => err report_error(err.message) return end @@ -35,10 +34,10 @@ class ApiController < ApplicationController doc = XML::Document.new doc.encoding = XML::Encoding::UTF_8 - root = XML::Node.new 'gpx' - root['version'] = '1.0' - root['creator'] = 'OpenStreetMap.org' - root['xmlns'] = "http://www.topografix.com/GPX/1/0" + root = XML::Node.new "gpx" + root["version"] = "1.0" + root["creator"] = "OpenStreetMap.org" + root["xmlns"] = "http://www.topografix.com/GPX/1/0" doc.root = root @@ -61,21 +60,21 @@ class ApiController < ApplicationController gpx_file = Trace.find(gpx_id) if gpx_file.trackable? - track = XML::Node.new 'trk' + track = XML::Node.new "trk" doc.root << track timestamps = true if gpx_file.identifiable? track << (XML::Node.new("name") << gpx_file.name) track << (XML::Node.new("desc") << gpx_file.description) - track << (XML::Node.new("url") << url_for(:controller => 'trace', :action => 'view', :display_name => gpx_file.user.display_name, :id => gpx_file.id)) + track << (XML::Node.new("url") << url_for(:controller => "trace", :action => "view", :display_name => gpx_file.user.display_name, :id => gpx_file.id)) end else # use the anonymous track segment if the user hasn't allowed # their GPX points to be tracked. timestamps = false if anon_track.nil? - anon_track = XML::Node.new 'trk' + anon_track = XML::Node.new "trk" doc.root << anon_track end track = anon_track @@ -84,12 +83,12 @@ class ApiController < ApplicationController if trackid != point.trackid if gpx_file.trackable? - trkseg = XML::Node.new 'trkseg' + trkseg = XML::Node.new "trkseg" track << trkseg trackid = point.trackid else if anon_trkseg.nil? - anon_trkseg = XML::Node.new 'trkseg' + anon_trkseg = XML::Node.new "trkseg" anon_track << anon_trkseg end trkseg = anon_trkseg @@ -121,27 +120,23 @@ class ApiController < ApplicationController bbox = BoundingBox.from_bbox_params(params) bbox.check_boundaries bbox.check_size - rescue Exception => err + rescue StandardError => err report_error(err.message) 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 @@ -164,14 +159,14 @@ class ApiController < ApplicationController 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) + 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 @@ -210,13 +205,13 @@ class ApiController < ApplicationController # Get a list of the tiles that have changed within a specified time # period def changes - zoom = (params[:zoom] || '12').to_i + zoom = (params[:zoom] || "12").to_i if params.include?(:start) && params.include?(:end) starttime = Time.parse(params[:start]) endtime = Time.parse(params[:end]) else - hours = (params[:hours] || '1').to_i.hours + hours = (params[:hours] || "1").to_i.hours endtime = Time.now.getutc starttime = endtime - hours end @@ -228,7 +223,7 @@ class ApiController < ApplicationController tiles = Node.where(:timestamp => starttime..endtime).group("maptile_for_point(latitude, longitude, #{zoom})").count doc = OSM::API.new.get_xml_doc - changes = XML::Node.new 'changes' + changes = XML::Node.new "changes" changes["starttime"] = starttime.xmlschema changes["endtime"] = endtime.xmlschema @@ -236,7 +231,7 @@ class ApiController < ApplicationController x = (tile.to_i >> zoom) & mask y = tile.to_i & mask - t = XML::Node.new 'tile' + t = XML::Node.new "tile" t["x"] = x.to_s t["y"] = y.to_s t["z"] = zoom.to_s @@ -261,37 +256,37 @@ class ApiController < ApplicationController def capabilities doc = OSM::API.new.get_xml_doc - api = XML::Node.new 'api' - version = XML::Node.new 'version' - version['minimum'] = "#{API_VERSION}" - version['maximum'] = "#{API_VERSION}" + api = XML::Node.new "api" + version = XML::Node.new "version" + version["minimum"] = "#{API_VERSION}" + version["maximum"] = "#{API_VERSION}" api << version - area = XML::Node.new 'area' - area['maximum'] = MAX_REQUEST_AREA.to_s + area = XML::Node.new "area" + area["maximum"] = MAX_REQUEST_AREA.to_s api << area - tracepoints = XML::Node.new 'tracepoints' - tracepoints['per_page'] = TRACEPOINTS_PER_PAGE.to_s + tracepoints = XML::Node.new "tracepoints" + tracepoints["per_page"] = TRACEPOINTS_PER_PAGE.to_s api << tracepoints - waynodes = XML::Node.new 'waynodes' - waynodes['maximum'] = MAX_NUMBER_OF_WAY_NODES.to_s + waynodes = XML::Node.new "waynodes" + waynodes["maximum"] = MAX_NUMBER_OF_WAY_NODES.to_s api << waynodes - changesets = XML::Node.new 'changesets' - changesets['maximum_elements'] = Changeset::MAX_ELEMENTS.to_s + changesets = XML::Node.new "changesets" + changesets["maximum_elements"] = Changeset::MAX_ELEMENTS.to_s api << changesets - timeout = XML::Node.new 'timeout' - timeout['seconds'] = API_TIMEOUT.to_s + timeout = XML::Node.new "timeout" + timeout["seconds"] = API_TIMEOUT.to_s api << timeout - status = XML::Node.new 'status' - status['database'] = database_status.to_s - status['api'] = api_status.to_s - status['gpx'] = gpx_status.to_s + status = XML::Node.new "status" + status["database"] = database_status.to_s + status["api"] = api_status.to_s + status["gpx"] = gpx_status.to_s api << status doc.root << api - policy = XML::Node.new 'policy' - blacklist = XML::Node.new 'imagery' + policy = XML::Node.new "policy" + blacklist = XML::Node.new "imagery" IMAGERY_BLACKLIST.each do |url_regex| - xnd = XML::Node.new 'blacklist' - xnd['regex'] = url_regex.to_s + xnd = XML::Node.new "blacklist" + xnd["regex"] = url_regex.to_s blacklist << xnd end policy << blacklist