adding some version reading for the nodes

This commit is contained in:
Shaun McDonald 2008-09-29 16:28:51 +00:00
parent 56c972577b
commit 0ec26f14a0
2 changed files with 17 additions and 1 deletions

View file

@ -43,6 +43,21 @@ class NodeController < ApplicationController
render :nothing => true, :status => :not_found
end
end
# Dump a specific version of the node based on the given params[:id] and params[:version]
def version
begin
node = Node.find(:first, :conditions => { :id => params[:id], :version => params[:version] } )
if node.visible
response.headers['Last-Modified'] = node.timestamp.rfc822
render :text => node.to_xml.to_s, :content_type => "text/xml"
else
render :nothing => true, :status => :gone
end
rescue ActiveRecord::RecordNotFound
render :nothing => true, :status => :not_found
end
end
# Update a node from given XML
def update

View file

@ -10,6 +10,7 @@ ActionController::Routing::Routes.draw do |map|
map.connect "api/#{API_VERSION}/node/:id/ways", :controller => 'way', :action => 'ways_for_node', :id => /\d+/
map.connect "api/#{API_VERSION}/node/:id/relations", :controller => 'relation', :action => 'relations_for_node', :id => /\d+/
map.connect "api/#{API_VERSION}/node/:id/history", :controller => 'old_node', :action => 'history', :id => /\d+/
map.connect "api/#{API_VERSION}/node/:id/:version", :controller => 'old_node', :action => 'version', :id => /\d+/, :version => /\d+/
map.connect "api/#{API_VERSION}/node/:id", :controller => 'node', :action => 'read', :id => /\d+/, :conditions => { :method => :get }
map.connect "api/#{API_VERSION}/node/:id", :controller => 'node', :action => 'update', :id => /\d+/, :conditions => { :method => :put }
map.connect "api/#{API_VERSION}/node/:id", :controller => 'node', :action => 'delete', :id => /\d+/, :conditions => { :method => :delete }
@ -59,7 +60,7 @@ ActionController::Routing::Routes.draw do |map|
# Potlatch API
map.connect "api/0.5/amf", :controller =>'amf', :action =>'talk'
map.connect "api/#{API_VERSION}/amf", :controller =>'amf', :action =>'talk'
map.connect "api/#{API_VERSION}/amf", :controller =>'amf', :action =>'talk'
map.connect "api/#{API_VERSION}/swf/trackpoints", :controller =>'swf', :action =>'trackpoints'