X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/3d24694addd628cc55a3d2a24d736e61cbd55273..cf24a5a3ee68905c5f55cf6f17c5d2ea983cb34f:/app/controllers/node_controller.rb diff --git a/app/controllers/node_controller.rb b/app/controllers/node_controller.rb index 29bf672e2..f1023e78f 100644 --- a/app/controllers/node_controller.rb +++ b/app/controllers/node_controller.rb @@ -11,24 +11,21 @@ class NodeController < ApplicationController # Create a node from XML. def create - if request.put? - node = Node.from_xml(request.raw_post, true) - # FIXME remove debug - logger.debug request.raw_post - logger.debug node - - if node - node.version = 0 - #node.changeset_id = node.changeset - node.visible = true - node.save_with_history! + begin + if request.put? + node = Node.from_xml(request.raw_post, true) - render :text => node.id.to_s, :content_type => "text/plain" + if node + node.create_with_history @user + render :text => node.id.to_s, :content_type => "text/plain" + else + render :nothing => true, :status => :bad_request + end else - render :nothing => true, :status => :bad_request + render :nothing => true, :status => :method_not_allowed end - else - render :nothing => true, :status => :method_not_allowed + rescue OSM::APIError => ex + render ex.render_opts end end @@ -74,9 +71,8 @@ class NodeController < ApplicationController else render :nothing => true, :status => :bad_request end - rescue OSM::APIVersionMismatchError => ex - render :text => "Version mismatch: Provided " + ex.provided.to_s + - ", server had: " + ex.latest.to_s, :status => :bad_request + rescue OSM::APIError => ex + render ex.render_opts rescue ActiveRecord::RecordNotFound render :nothing => true, :status => :not_found end @@ -96,7 +92,7 @@ class NodeController < ApplicationController if new_node and new_node.id == node.id node.delete_with_history(new_node, @user) - render :nothing => true, :status => :success + render :nothing => true else render :nothing => true, :status => :bad_request end