rails updates
This commit is contained in:
parent
a6f61bd18a
commit
613e88c4a8
9 changed files with 113 additions and 35 deletions
|
@ -37,6 +37,16 @@ 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
|
||||
|
||||
|
@ -68,4 +78,33 @@ class NodeController < ApplicationController
|
|||
end
|
||||
|
||||
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
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
class SegmentController < ApplicationController
|
||||
|
||||
require 'xml/libxml'
|
||||
|
||||
before_filter :authorize
|
||||
|
@ -9,9 +8,17 @@ class SegmentController < ApplicationController
|
|||
segment = Segment.from_xml(request.raw_post, true)
|
||||
|
||||
if segment
|
||||
|
||||
segment.user_id = @user.id
|
||||
if segment.save_with_history
|
||||
|
||||
a = Node.find(segment.node_a.to_i)
|
||||
b = Node.find(segment.node_b.to_i)
|
||||
|
||||
unless a and a.visible and b and b.visible
|
||||
render :nothing => true, :status => 400
|
||||
end
|
||||
|
||||
if segment.save_with_history
|
||||
render :text => segment.id
|
||||
else
|
||||
render :nothing => true, :status => 500
|
||||
|
@ -56,9 +63,10 @@ class SegmentController < ApplicationController
|
|||
segment.timestamp = Time.now
|
||||
segment.user_id = @user.id
|
||||
|
||||
segment.latitude = new_segment.latitude
|
||||
segment.longitude = new_segment.longitude
|
||||
segment.node_a = new_segment.node_a
|
||||
segment.node_b = new_segment.node_b
|
||||
segment.tags = new_segment.tags
|
||||
segment.visible = new_segment.visible
|
||||
|
||||
if segment.id == new_segment.id and segment.save_with_history
|
||||
render :nothing => true, :status => 200
|
||||
|
@ -70,5 +78,34 @@ class SegmentController < ApplicationController
|
|||
|
||||
end
|
||||
|
||||
def history
|
||||
segment = Segment.find(params[:id])
|
||||
|
||||
unless segment
|
||||
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
|
||||
|
||||
segment.old_segments.each do |old_segment|
|
||||
el1 = XML::Node.new 'segment'
|
||||
el1['id'] = old_segment.id.to_s
|
||||
el1['from'] = old_segment.node_a.to_s
|
||||
el1['to'] = old_segment.node_b.to_s
|
||||
Segment.split_tags(el1, old_segment.tags)
|
||||
el1['visible'] = old_segment.visible.to_s
|
||||
el1['timestamp'] = old_segment.timestamp.xmlschema
|
||||
root << el1
|
||||
end
|
||||
|
||||
render :text => doc.to_s
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
2
app/controllers/site_controller.rb
Normal file
2
app/controllers/site_controller.rb
Normal file
|
@ -0,0 +1,2 @@
|
|||
class SiteController < ApplicationController
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue