]> git.openstreetmap.org Git - rails.git/commitdiff
Make api show/update/destroy way actions resourceful
authorAnton Khorev <tony29@yandex.ru>
Sat, 1 Feb 2025 11:20:21 +0000 (14:20 +0300)
committerAnton Khorev <tony29@yandex.ru>
Wed, 5 Feb 2025 17:22:16 +0000 (20:22 +0300)
app/abilities/api_ability.rb
app/controllers/api/ways_controller.rb
config/routes.rb
test/controllers/api/ways_controller_test.rb

index e3ea9e4345a793290ff9e75293d56a5a1bdf43ef..bca6b779bae4a52457e2482bacefd789f7881a1f 100644 (file)
@@ -38,8 +38,8 @@ class ApiAbility
         if user.terms_agreed?
           can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset if scope?(token, :write_api)
           can :create, ChangesetComment if scope?(token, :write_api)
-          can [:create, :update, :destroy], [Node] if scope?(token, :write_api)
-          can [:create, :update, :delete], [Way, Relation] if scope?(token, :write_api)
+          can [:create, :update, :destroy], [Node, Way] if scope?(token, :write_api)
+          can [:create, :update, :delete], [Relation] if scope?(token, :write_api)
         end
 
         if user.moderator?
index 632fdb9a629637d1112831012e803e3f145605ba..285ed46046041af296b1dc223e9320293fcd14d5 100644 (file)
@@ -1,13 +1,13 @@
 module Api
   class WaysController < ApiController
-    before_action :check_api_writable, :only => [:create, :update, :delete]
-    before_action :authorize, :only => [:create, :update, :delete]
+    before_action :check_api_writable, :only => [:create, :update, :destroy]
+    before_action :authorize, :only => [:create, :update, :destroy]
 
     authorize_resource
 
-    before_action :require_public_data, :only => [:create, :update, :delete]
-    before_action :set_request_formats, :except => [:create, :update, :delete]
-    before_action :check_rate_limit, :only => [:create, :update, :delete]
+    before_action :require_public_data, :only => [:create, :update, :destroy]
+    before_action :set_request_formats, :except => [:create, :update, :destroy]
+    before_action :check_rate_limit, :only => [:create, :update, :destroy]
 
     def index
       raise OSM::APIBadUserInput, "The parameter ways is required, and must be of the form ways=id[,id[,id...]]" unless params["ways"]
@@ -60,7 +60,7 @@ module Api
     end
 
     # This is the API call to delete a way
-    def delete
+    def destroy
       way = Way.find(params[:id])
       new_way = Way.from_xml(request.raw_post)
 
index 0d6a51ad9f79f279fd039e27db9669f3e9fc4a1c..ff5c74b22faf54c7ee1766818c2bd6c5e393615e 100644 (file)
@@ -41,9 +41,6 @@ OpenStreetMap::Application.routes.draw do
     get "way/:id/relations" => "relations#relations_for_way", :as => :way_relations, :id => /\d+/
     post "way/:id/:version/redact" => "old_ways#redact", :as => :way_version_redact, :version => /\d+/, :id => /\d+/
     get "way/:id/:version" => "old_ways#show", :as => :api_old_way, :id => /\d+/, :version => /\d+/
-    get "way/:id" => "ways#show", :as => :api_way, :id => /\d+/
-    put "way/:id" => "ways#update", :id => /\d+/
-    delete "way/:id" => "ways#delete", :id => /\d+/
 
     get "relation/:id/relations" => "relations#relations_for_relation", :as => :relation_relations, :id => /\d+/
     get "relation/:id/history" => "old_relations#history", :as => :api_relation_history, :id => /\d+/
@@ -61,6 +58,7 @@ OpenStreetMap::Application.routes.draw do
     put "node/create" => "nodes#create", :as => nil
 
     resources :ways, :only => [:index, :create]
+    resources :ways, :path => "way", :id => /\d+/, :only => [:show, :update, :destroy]
     put "way/create" => "ways#create", :as => nil
 
     resources :relations, :only => [:index, :create]
index e81b49b81da45f0762b8730cf69576aa24fb3a01..e9b2b46017dd09ea313fd6e6f23bc23f20e68c7f 100644 (file)
@@ -39,7 +39,7 @@ module Api
       )
       assert_routing(
         { :path => "/api/0.6/way/1", :method => :delete },
-        { :controller => "api/ways", :action => "delete", :id => "1" }
+        { :controller => "api/ways", :action => "destroy", :id => "1" }
       )
 
       assert_recognizes(
@@ -284,7 +284,7 @@ module Api
     # Test deleting ways.
     # -------------------------------------
 
-    def test_delete
+    def test_destroy
       private_user = create(:user, :data_public => false)
       private_open_changeset = create(:changeset, :user => private_user)
       private_closed_changeset = create(:changeset, :closed, :user => private_user)