diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-06-05 16:07:19 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-06-05 16:14:55 +0100 |
commit | 9e77408fdd0ffc170b51be1d225bc10cf1034add (patch) | |
tree | fce5dd0af63f5908d600b9e4c24f3fe678dec535 | |
parent | a885764b65916020d9182073b38f6951a20d4b8c (diff) |
We're assuming feed urls without format suffixes should serve up atom/xml, so ignore any format from content negotiation in favour of that default.0.11.0.4hotfix/0.11.0.4
-rw-r--r-- | app/controllers/track_controller.rb | 3 | ||||
-rw-r--r-- | spec/controllers/track_controller_spec.rb | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb index 40e82e7a4..40fa69290 100644 --- a/app/controllers/track_controller.rb +++ b/app/controllers/track_controller.rb @@ -153,6 +153,9 @@ class TrackController < ApplicationController def atom_feed_internal @xapian_object = perform_search([InfoRequestEvent], @track_thing.track_query, @track_thing.params[:feed_sortby], nil, 25, 1) + # We're assuming that a request to a feed url with no format suffix wants atom/xml + # so set that as the default, regardless of content negotiation + request.format = 'xml' unless params[:format] respond_to do |format| format.json { render :json => @xapian_object.results.map { |r| r[:model].json_for_api(true, lambda { |t| view_context.highlight_and_excerpt(t, @xapian_object.words_to_highlight, 150) } diff --git a/spec/controllers/track_controller_spec.rb b/spec/controllers/track_controller_spec.rb index 5a766b1e1..1575bc84e 100644 --- a/spec/controllers/track_controller_spec.rb +++ b/spec/controllers/track_controller_spec.rb @@ -159,6 +159,18 @@ describe TrackController, "when viewing RSS feed for a track" do get :track_user, :feed => 'feed', :url_name => "there_is_no_such_user" }.should raise_error(ActiveRecord::RecordNotFound) end + + it 'should return atom/xml for a feed url without format specified, even if the + requester prefers json' do + + request.env['HTTP_ACCEPT'] = 'application/json,text/xml' + track_thing = track_things(:track_fancy_dog_request) + + get :track_request, :feed => 'feed', :url_title => track_thing.info_request.url_title + response.should render_template('track/atom_feed') + response.content_type.should == 'application/atom+xml' + end + end describe TrackController, "when viewing JSON version of a track feed" do |