From: Shaun McDonald Date: Mon, 29 Sep 2008 16:28:51 +0000 (+0000) Subject: adding some version reading for the nodes X-Git-Tag: live~8121^2~301 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/0ec26f14a04744242e93912b28c3cf7607efdce6 adding some version reading for the nodes --- diff --git a/app/controllers/node_controller.rb b/app/controllers/node_controller.rb index 4a7527734..70bf59734 100644 --- a/app/controllers/node_controller.rb +++ b/app/controllers/node_controller.rb @@ -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 diff --git a/config/routes.rb b/config/routes.rb index a45ad1e0b..286e4055c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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'