50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
class ChangesetCommentsController < ApplicationController
|
|
before_action :authorize_web
|
|
before_action :set_locale
|
|
|
|
authorize_resource
|
|
|
|
before_action -> { check_database_readable(:need_api => true) }
|
|
around_action :web_timeout
|
|
|
|
##
|
|
# Get a feed of recent changeset comments
|
|
def index
|
|
if params[:id]
|
|
# Extract the arguments
|
|
id = params[:id].to_i
|
|
|
|
# Find the changeset
|
|
changeset = Changeset.find(id)
|
|
|
|
# Return comments for this changeset only
|
|
@comments = changeset.comments.includes(:author, :changeset).limit(comments_limit)
|
|
else
|
|
# Return comments
|
|
@comments = ChangesetComment.includes(:author, :changeset).where(:visible => true).order("created_at DESC").limit(comments_limit).preload(:changeset)
|
|
end
|
|
|
|
# Render the result
|
|
respond_to do |format|
|
|
format.rss
|
|
end
|
|
rescue OSM::APIBadUserInput
|
|
head :bad_request
|
|
end
|
|
|
|
private
|
|
|
|
##
|
|
# Get the maximum number of comments to return
|
|
def comments_limit
|
|
if params[:limit]
|
|
if params[:limit].to_i.positive? && params[:limit].to_i <= 10000
|
|
params[:limit].to_i
|
|
else
|
|
raise OSM::APIBadUserInput, "Comments limit must be between 1 and 10000"
|
|
end
|
|
else
|
|
100
|
|
end
|
|
end
|
|
end
|