From: Anton Khorev Date: Sat, 30 Mar 2024 05:26:58 +0000 (+0300) Subject: Rename api changesets index action X-Git-Tag: live~680^2~1 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/765165777e2741104f7e58605b2873ed6c94a604 Rename api changesets index action --- diff --git a/app/abilities/api_ability.rb b/app/abilities/api_ability.rb index e20b849d1..96ed9b080 100644 --- a/app/abilities/api_ability.rb +++ b/app/abilities/api_ability.rb @@ -10,7 +10,7 @@ class ApiAbility can :show, :version if Settings.status != "database_offline" - can [:show, :download, :query], Changeset + can [:index, :show, :download], Changeset can [:index, :create, :feed, :show, :search], Note can :index, Tracepoint can [:index, :show], User diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 78a5b48e3..50cb78782 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -3,7 +3,7 @@ module Api class ChangesetsController < ApiController before_action :check_api_writable, :only => [:create, :update, :upload, :subscribe, :unsubscribe] - before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :subscribe, :unsubscribe] + before_action :check_api_readable, :except => [:index, :create, :update, :upload, :download, :subscribe, :unsubscribe] before_action :setup_user_auth, :only => [:show] before_action :authorize, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe] @@ -18,6 +18,45 @@ module Api # Helper methods for checking consistency include ConsistencyValidations + ## + # query changesets by bounding box, time, user or open/closed status. + def index + raise OSM::APIBadUserInput, "cannot use order=oldest with time" if params[:time] && params[:order] == "oldest" + + # find any bounding box + bbox = BoundingBox.from_bbox_params(params) if params["bbox"] + + # create the conditions that the user asked for. some or all of + # these may be nil. + changesets = Changeset.all + changesets = conditions_bbox(changesets, bbox) + changesets = conditions_user(changesets, params["user"], params["display_name"]) + changesets = conditions_time(changesets, params["time"]) + changesets = conditions_from_to(changesets, params["from"], params["to"]) + changesets = conditions_open(changesets, params["open"]) + changesets = conditions_closed(changesets, params["closed"]) + changesets = conditions_ids(changesets, params["changesets"]) + + # sort the changesets + changesets = if params[:order] == "oldest" + changesets.order(:created_at => :asc) + else + changesets.order(:created_at => :desc) + end + + # limit the result + changesets = changesets.limit(result_limit) + + # preload users, tags and comments, and render result + @changesets = changesets.preload(:user, :changeset_tags, :comments) + render "changesets" + + respond_to do |format| + format.xml + format.json + end + end + ## # Return XML giving the basic info about the changeset. Does not # return anything about the nodes, ways and relations in the changeset. @@ -145,45 +184,6 @@ module Api end end - ## - # query changesets by bounding box, time, user or open/closed status. - def query - raise OSM::APIBadUserInput, "cannot use order=oldest with time" if params[:time] && params[:order] == "oldest" - - # find any bounding box - bbox = BoundingBox.from_bbox_params(params) if params["bbox"] - - # create the conditions that the user asked for. some or all of - # these may be nil. - changesets = Changeset.all - changesets = conditions_bbox(changesets, bbox) - changesets = conditions_user(changesets, params["user"], params["display_name"]) - changesets = conditions_time(changesets, params["time"]) - changesets = conditions_from_to(changesets, params["from"], params["to"]) - changesets = conditions_open(changesets, params["open"]) - changesets = conditions_closed(changesets, params["closed"]) - changesets = conditions_ids(changesets, params["changesets"]) - - # sort the changesets - changesets = if params[:order] == "oldest" - changesets.order(:created_at => :asc) - else - changesets.order(:created_at => :desc) - end - - # limit the result - changesets = changesets.limit(result_limit) - - # preload users, tags and comments, and render result - @changesets = changesets.preload(:user, :changeset_tags, :comments) - render "changesets" - - respond_to do |format| - format.xml - format.json - end - end - ## # updates a changeset's tags. none of the changeset's attributes are # user-modifiable, so they will be ignored. diff --git a/config/routes.rb b/config/routes.rb index 1633e2b26..d7fc4627c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -25,7 +25,7 @@ OpenStreetMap::Application.routes.draw do post "changeset/:id/unsubscribe" => "changesets#unsubscribe", :as => :api_changeset_unsubscribe, :id => /\d+/ put "changeset/:id" => "changesets#update", :id => /\d+/ put "changeset/:id/close" => "changesets#close", :as => :changeset_close, :id => /\d+/ - get "changesets" => "changesets#query" + get "changesets" => "changesets#index" post "changeset/:id/comment" => "changeset_comments#create", :as => :changeset_comment, :id => /\d+/ post "changeset/comment/:id/hide" => "changeset_comments#destroy", :as => :changeset_comment_hide, :id => /\d+/ post "changeset/comment/:id/unhide" => "changeset_comments#restore", :as => :changeset_comment_unhide, :id => /\d+/ diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb index e5c6c0481..d2e8db7c4 100644 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@ -51,11 +51,11 @@ module Api ) assert_routing( { :path => "/api/0.6/changesets", :method => :get }, - { :controller => "api/changesets", :action => "query" } + { :controller => "api/changesets", :action => "index" } ) assert_routing( { :path => "/api/0.6/changesets.json", :method => :get }, - { :controller => "api/changesets", :action => "query", :format => "json" } + { :controller => "api/changesets", :action => "index", :format => "json" } ) end