From: mmd-osm Date: Thu, 27 Jun 2019 20:23:38 +0000 (+0200) Subject: Refactoring X-Git-Tag: live~3085^2~4 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/8ad1ce97983a5d4fb86ccb8ee4cd640a76f95255 Refactoring --- diff --git a/app/controllers/api/map_controller.rb b/app/controllers/api/map_controller.rb index d151d3d39..4790e2f60 100644 --- a/app/controllers/api/map_controller.rb +++ b/app/controllers/api/map_controller.rb @@ -19,15 +19,15 @@ module Api # check boundary is sane and area within defined # see /config/application.yml begin - bbox = BoundingBox.from_bbox_params(params) - bbox.check_boundaries - bbox.check_size + @bounds = BoundingBox.from_bbox_params(params) + @bounds.check_boundaries + @bounds.check_size rescue StandardError => err report_error(err.message) return end - nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(Settings.max_number_of_nodes + 1) + nodes = Node.bbox(@bounds).where(:visible => true).includes(:node_tags).limit(Settings.max_number_of_nodes + 1) node_ids = nodes.collect(&:id) if node_ids.length > Settings.max_number_of_nodes @@ -35,9 +35,6 @@ module Api return end - # add bounds - @bounds = bbox - # get ways # find which ways are needed ways = [] @@ -77,22 +74,19 @@ module Api end end - relations = Relation.nodes(visible_nodes.keys).visible + - Relation.ways(way_ids).visible + @relations = Relation.nodes(visible_nodes.keys).visible + + Relation.ways(way_ids).visible # 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 # an exception for cases where an relation references another *relation*; # in that case we return that as well (but we don't go recursive here) - relations += Relation.relations(relations.collect(&:id)).visible + @relations += Relation.relations(@relations.collect(&:id)).visible # 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 = [] - relations.uniq.each do |relation| - @relations << relation - end + @relations.uniq! response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\"" # Render the result diff --git a/app/controllers/api/nodes_controller.rb b/app/controllers/api/nodes_controller.rb index 891528a5f..dafb19ebd 100644 --- a/app/controllers/api/nodes_controller.rb +++ b/app/controllers/api/nodes_controller.rb @@ -26,13 +26,11 @@ module Api # Dump the details on a node given in params[:id] def show - node = Node.find(params[:id]) - - response.last_modified = node.timestamp + @node = Node.find(params[:id]) - if node.visible - @node = node + response.last_modified = @node.timestamp + if @node.visible # Render the result respond_to do |format| format.xml diff --git a/app/controllers/api/old_controller.rb b/app/controllers/api/old_controller.rb index bf3fcdb39..49fdcf1a3 100644 --- a/app/controllers/api/old_controller.rb +++ b/app/controllers/api/old_controller.rb @@ -22,13 +22,12 @@ module Api # to do that ourselves. raise OSM::APINotFoundError if @elements.empty? - visible_elements = if show_redactions? - @elements - else - @elements.unredacted - end - - @elems = visible_elements + # determine visible elements + @elems = if show_redactions? + @elements + else + @elements.unredacted + end # Render the result respond_to do |format| diff --git a/app/controllers/api/relations_controller.rb b/app/controllers/api/relations_controller.rb index 41f4e325a..2f2cb8503 100644 --- a/app/controllers/api/relations_controller.rb +++ b/app/controllers/api/relations_controller.rb @@ -22,11 +22,9 @@ module Api end def show - relation = Relation.find(params[:id]) - response.last_modified = relation.timestamp - if relation.visible - @relation = relation - + @relation = Relation.find(params[:id]) + response.last_modified = @relation.timestamp + if @relation.visible # Render the result respond_to do |format| format.xml diff --git a/app/controllers/api/ways_controller.rb b/app/controllers/api/ways_controller.rb index 102be29bd..0871384a7 100644 --- a/app/controllers/api/ways_controller.rb +++ b/app/controllers/api/ways_controller.rb @@ -22,13 +22,11 @@ module Api end def show - way = Way.find(params[:id]) - - response.last_modified = way.timestamp + @way = Way.find(params[:id]) - if way.visible - @way = way + response.last_modified = @way.timestamp + if @way.visible # Render the result respond_to do |format| format.xml @@ -64,22 +62,20 @@ module Api end def full - way = Way.includes(:nodes => :node_tags).find(params[:id]) + @way = Way.includes(:nodes => :node_tags).find(params[:id]) - if way.visible + if @way.visible visible_nodes = {} @nodes = [] - way.nodes.uniq.each do |node| + @way.nodes.uniq.each do |node| if node.visible @nodes << node visible_nodes[node.id] = node end end - @way = way - # Render the result respond_to do |format| format.xml