diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/api_controller.rb | 20 | ||||
-rwxr-xr-x | app/helpers/link_to_helper.rb | 6 | ||||
-rw-r--r-- | app/views/api/new_requests.atom.builder | 22 | ||||
-rw-r--r-- | app/views/api/request_events.atom.builder | 25 |
4 files changed, 40 insertions, 33 deletions
diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index a8c9b5fef..3001ca3cb 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -155,17 +155,27 @@ class ApiController < ApplicationController head :no_content end - def body_new_requests + def body_request_events feed_type = params[:feed_type] raise PermissionDenied.new("#{@public_body.id} != #{params[:id]}") if @public_body.id != params[:id].to_i - @requests = @public_body.info_requests + @events = InfoRequestEvent.find_by_sql([ + %(select info_request_events.* + from info_requests + join info_request_events on info_requests.id = info_request_events.info_request_id + where info_requests.public_body_id = ? + and info_request_events.event_type in ( + 'sent', 'followup_sent', 'resent', 'followup_resent' + ) + order by info_request_events.created_at desc + ), @public_body.id + ]) if feed_type == "atom" - render :template => "api/new_requests.atom", :layout => false + render :template => "api/request_events.atom", :layout => false elsif feed_type == "json" - render :json => @requests + render :json => @events else - raise ActiveRecord::RecordNotFound.new("Unrecognised feed type: " + feed_type) + raise ActiveRecord::RecordNotFound.new("Unrecognised feed type: #{feed_type}") end end diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb index efa20b723..1a86333b6 100755 --- a/app/helpers/link_to_helper.rb +++ b/app/helpers/link_to_helper.rb @@ -16,12 +16,6 @@ module LinkToHelper params = {:url_title => info_request.url_title, :only_path => true} return show_request_url(params.merge(extra_params)) end - - def info_request_url(info_request) - # This method is called implicitly by the builder view views/api/new_requests.atom.builder - # to construct the URLs for the feed entries. Therefore we return fully-qualified URLs here. - return main_url(request_url(info_request)) - end def request_link(info_request, cls=nil ) link_to h(info_request.title), request_url(info_request), :class => cls diff --git a/app/views/api/new_requests.atom.builder b/app/views/api/new_requests.atom.builder deleted file mode 100644 index bd5c2f90e..000000000 --- a/app/views/api/new_requests.atom.builder +++ /dev/null @@ -1,22 +0,0 @@ -atom_feed do |feed| - feed.title("New requests made to #{@public_body.name}") - feed.updated(@requests.first.updated_at) - - puts @requests.inspect - for request in @requests - feed.entry(request) do |entry| - entry.updated(request.updated_at) - entry.published(request.created_at) - entry.title(request.title) - entry.content(request.last_event_forming_initial_request.outgoing_message.body, :type => 'text') - entry.author do |author| - author.name(request.user_name) - if !request.user.nil? - author.uri(main_url(user_url(request.user))) - end - author.email(request.incoming_email) - end - end - end -end - diff --git a/app/views/api/request_events.atom.builder b/app/views/api/request_events.atom.builder new file mode 100644 index 000000000..4f0133051 --- /dev/null +++ b/app/views/api/request_events.atom.builder @@ -0,0 +1,25 @@ +atom_feed("xmlns:alaveteli" => "http://www.alaveteli.org/API/v2/RequestEvents/Atom") do |feed| + feed.title("Events relating to #{@public_body.name}") + feed.updated(@events.first.created_at) + + for event in @events + feed.entry(event) do |entry| + request = event.info_request + + entry.published(event.created_at) + entry.tag!("alaveteli:event_type", event.event_type) + entry.tag!("alaveteli:request_url", main_url(request_url(request))) + entry.title(request.title) + + entry.content(event.outgoing_message.body, :type => 'text') + + entry.author do |author| + author.name(request.user_name) + if !request.user.nil? + author.uri(main_url(user_url(request.user))) + end + author.email(request.incoming_email) + end + end + end +end |