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