Using an around_handler for catching and rendering errors in most of the API controll...
[rails.git] / app / controllers / old_relation_controller.rb
1 class OldRelationController < ApplicationController
2   require 'xml/libxml'
3
4   session :off
5   before_filter :check_api_readable
6   after_filter :compress_output
7   around_filter :api_call_handle_error
8
9   def history
10     relation = Relation.find(params[:id])
11     doc = OSM::API.new.get_xml_doc
12     
13     relation.old_relations.each do |old_relation|
14       doc.root << old_relation.to_xml_node
15     end
16     
17     render :text => doc.to_s, :content_type => "text/xml"
18   end
19   
20   def version
21     old_relation = OldRelation.find(:first, :conditions => {:id => params[:id], :version => params[:version]} )
22     if old_relation.nil?
23       # (RecordNotFound is not raised with find :first...)
24       render :nothing => true, :status => :not_found
25       return
26     end
27     
28     response.headers['Last-Modified'] = old_relation.timestamp.rfc822
29     
30     doc = OSM::API.new.get_xml_doc
31     doc.root << old_relation.to_xml_node
32     
33     render :text => doc.to_s, :content_type => "text/xml"
34   end
35 end