]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/way_controller.rb
Allow the API to be taken offline completely as well as being put into
[rails.git] / app / controllers / way_controller.rb
index d6489fef80d7b445c8926207851cddac20d19226..d569991af109469c2eee4c39dde9dd189bbf5e1a 100644 (file)
@@ -3,7 +3,8 @@ class WayController < ApplicationController
 
   session :off
   before_filter :authorize, :only => [:create, :update, :delete]
-  before_filter :check_availability, :only => [:create, :update, :delete]
+  before_filter :check_write_availability, :only => [:create, :update, :delete]
+  before_filter :check_read_availability, :except => [:create, :update, :delete]
   after_filter :compress_output
 
   def create
@@ -15,12 +16,9 @@ class WayController < ApplicationController
           render :nothing => true, :status => :precondition_failed
         else
           way.user_id = @user.id
+          way.save_with_history!
 
-          if way.save_with_history
-            render :text => way.id.to_s, :content_type => "text/plain"
-          else
-            render :nothing => true, :status => :internal_server_error
-          end
+          render :text => way.id.to_s, :content_type => "text/plain"
         end
       else
         render :nothing => true, :status => :bad_request
@@ -41,8 +39,6 @@ class WayController < ApplicationController
       end
     rescue ActiveRecord::RecordNotFound
       render :nothing => true, :status => :not_found
-    rescue
-      render :nothing => true, :status => :internal_server_error
     end
   end
 
@@ -61,12 +57,9 @@ class WayController < ApplicationController
             way.tags = new_way.tags
             way.segs = new_way.segs
             way.visible = true
+            way.save_with_history!
 
-            if way.save_with_history
-              render :nothing => true
-            else
-              render :nothing => true, :status => :internal_server_error
-            end
+            render :nothing => true
           end
         else
           render :nothing => true, :status => :bad_request
@@ -76,8 +69,6 @@ class WayController < ApplicationController
       end
     rescue ActiveRecord::RecordNotFound
       render :nothing => true, :status => :not_found
-    rescue
-      render :nothing => true, :status => :internal_server_error
     end
   end
 
@@ -90,19 +81,14 @@ class WayController < ApplicationController
         way.tags = []
         way.segs = []
         way.visible = false
+        way.save_with_history!
 
-        if way.save_with_history
-          render :nothing => true
-        else
-          render :nothing => true, :status => :internal_server_error
-        end
+        render :nothing => true
       else
         render :nothing => true, :status => :gone
       end
     rescue ActiveRecord::RecordNotFound
       render :nothing => true, :status => :not_found
-    rescue
-      render :nothing => true, :status => :internal_server_error
     end
   end
 
@@ -136,13 +122,15 @@ class WayController < ApplicationController
       end
     rescue ActiveRecord::RecordNotFound
       render :nothing => true, :status => :not_found
-    rescue
-      render :nothing => true, :status => :internal_server_error
     end
   end
 
   def ways
-    ids = params['ways'].split(',').collect { |w| w.to_i }
+    begin
+      ids = params['ways'].split(',').collect { |w| w.to_i }
+    rescue
+      ids = []
+    end
 
     if ids.length > 0
       doc = OSM::API.new.get_xml_doc