api: support the expiry param on all GET requests.

This commit is contained in:
evazion
2019-09-08 15:32:31 -05:00
parent 3f7e05316d
commit 22fd90eee9
7 changed files with 14 additions and 19 deletions

View File

@@ -44,7 +44,6 @@ class ArtistsController < ApplicationController
end
format.json do
render :json => @artists.to_json(:include => [:urls])
expires_in params[:expiry].to_i.days if params[:expiry]
end
end
end

View File

@@ -18,12 +18,7 @@ class PoolsController < ApplicationController
def index
@pools = Pool.includes(:creator).search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
respond_with(@pools) do |format|
format.json do
render json: @pools.to_json
expires_in params[:expiry].to_i.days if params[:expiry]
end
end
respond_with(@pools)
end
def gallery

View File

@@ -21,8 +21,6 @@ class TagsController < ApplicationController
@tags = Tag.names_matches_with_aliases(params[:search][:name_matches])
end
expires_in params[:expiry].to_i.days if params[:expiry]
respond_with(@tags, root: "tags")
end

View File

@@ -30,12 +30,7 @@ class UsersController < ApplicationController
redirect_to user_path(@user)
else
@users = User.search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
respond_with(@users) do |format|
format.json do
render json: @users.to_json
expires_in params[:expiry].to_i.days if params[:expiry]
end
end
respond_with(@users)
end
end

View File

@@ -26,10 +26,6 @@ class WikiPagesController < ApplicationController
end
end
end
format.json do
render json: @wiki_pages.to_json
expires_in params[:expiry].to_i.days if params[:expiry]
end
end
end

View File

@@ -3,6 +3,11 @@
class ApplicationResponder < ActionController::Responder
# this is called by respond_with for non-html, non-js responses.
def to_format
if get?
expiry = request.params["expiry"]
controller.expires_in expiry.to_i.days if expiry.present?
end
if format == :xml
options[:root] ||= resource.table_name.dasherize if resource.respond_to?(:table_name)
end

View File

@@ -192,6 +192,13 @@ class ApplicationControllerTest < ActionDispatch::IntegrationTest
assert_equal(tags.first.id, response.parsed_body.first.fetch("id"))
end
should "support the expiry parameter" do
get posts_path, as: :json, params: { expiry: "1" }
assert_response :success
assert_equal("max-age=#{1.day}, private", response.headers["Cache-Control"])
end
should "return the correct root element name for empty xml responses" do
get tags_path, as: :xml