]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/node_controller.rb
slippy map alpha
[rails.git] / app / controllers / node_controller.rb
index 97d551776b92809f8ac91e22fde49bce31acd690..ae0d00c75c5dc6901bb2bf57bce54779f07cc96b 100644 (file)
@@ -13,8 +13,7 @@ class NodeController < ApplicationController
 
           render :text => node.id
         else
-          render :text => 'truesrgtsrtfgsar', :status => 500
-#          render :nothing => true, :status => 500
+          render :nothing => true, :status => 500
         end
         return
 
@@ -24,8 +23,7 @@ class NodeController < ApplicationController
       end
     end
 
-          render :text => 'FFFFFFFFFF ', :status => 500
-#    render :nothing => true, :status => 500 # something went very wrong
+    render :nothing => true, :status => 500 # something went very wrong
   end
 
   def rest
@@ -39,30 +37,40 @@ class NodeController < ApplicationController
     case request.method
 
     when :get
+      unless node
+        render :nothing => true, :status => 500
+        return
+      end
+
+      unless node.visible
+        render :nothing => true, :status => 410
+        return
+      end
+
       render :text => node.to_xml.to_s
       return
 
     when :delete
-
       if node.visible
         node.visible = 0
-
         node.save_with_history
-
         render :nothing => true
       else
         render :nothing => true, :status => 410
       end
 
     when :put
-
       new_node = Node.from_xml(request.raw_post)
 
-      new_node.timestamp = Time.now
-      new_node.user_id = @user.id
+      node.timestamp = Time.now
+      node.user_id = @user.id
+
+      node.latitude = new_node.latitude 
+      node.longitude = new_node.longitude
+      node.tags = new_node.tags
 
-      if node.id == new_node.id and new_node.save_with_history
-        render :text => node.id
+      if node.id == new_node.id and node.save_with_history
+        render :nothing => true, :status => 200
       else
         render :nothing => true, :status => 500
       end
@@ -71,5 +79,32 @@ class NodeController < ApplicationController
 
   end
 
+  def history
+    node = Node.find(params[:id])
+
+    unless node
+      render :nothing => true, :staus => 404
+      return
+    end
 
+    doc = XML::Document.new
+    doc.encoding = 'UTF-8' 
+    root = XML::Node.new 'osm'
+    root['version'] = '0.4'
+    root['generator'] = 'OpenStreetMap server'
+    doc.root = root
+
+    node.old_nodes.each do |old_node|
+      el1 = XML::Node.new 'node'
+      el1['id'] = old_node.id.to_s
+      el1['lat'] = old_node.latitude.to_s
+      el1['lon'] = old_node.longitude.to_s
+      Node.split_tags(el1, old_node.tags)
+      el1['visible'] = old_node.visible.to_s
+      el1['timestamp'] = old_node.timestamp.xmlschema
+      root << el1
+    end
+
+    render :text => doc.to_s
+  end
 end