nodes done, segment skelaton
[rails.git] / app / controllers / node_controller.rb
1 class NodeController < ApplicationController
2   require 'xml/libxml'
3
4   before_filter :authorize
5
6   def create
7     if request.put?
8       node = Node.from_xml(request.raw_post, true)
9
10       if node
11         node.user_id = @user.id
12         if node.save_with_history
13
14           render :text => node.id
15         else
16           render :nothing => true, :status => 500
17         end
18         return
19
20       else
21         render :nothing => true, :status => 400 # if we got here the doc didnt parse
22         return
23       end
24     end
25
26     render :nothing => true, :status => 500 # something went very wrong
27   end
28
29   def rest
30     unless Node.exists?(params[:id])
31       render :nothing => true, :status => 400
32       return
33     end
34
35     node = Node.find(params[:id])
36
37     case request.method
38
39     when :get
40       render :text => node.to_xml.to_s
41       return
42
43     when :delete
44       if node.visible
45         node.visible = 0
46         node.save_with_history
47         render :nothing => true
48       else
49         render :nothing => true, :status => 410
50       end
51
52     when :put
53       new_node = Node.from_xml(request.raw_post)
54
55       node.timestamp = Time.now
56       node.user_id = @user.id
57
58       node.latitude = new_node.latitude 
59       node.longitude = new_node.longitude
60       node.tags = new_node.tags
61
62       if node.id == new_node.id and node.save_with_history
63         render :nothing => true, :status => 200
64       else
65         render :nothing => true, :status => 500
66       end
67       return
68     end
69
70   end
71 end