You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
# frozen_string_literal: true |
|
|
|
class Api::Activitypub::OutboxController < ApiController |
|
before_action :set_account |
|
|
|
respond_to :activitystreams2 |
|
|
|
def show |
|
headers['Access-Control-Allow-Origin'] = '*' |
|
|
|
@statuses = Status.as_outbox_timeline(@account).paginate_by_max_id(limit_param(DEFAULT_STATUSES_LIMIT), params[:max_id], params[:since_id]) |
|
@statuses = cache_collection(@statuses) |
|
|
|
set_maps(@statuses) |
|
|
|
# Since the statuses are in reverse chronological order, last is the lowest ID. |
|
@next_path = api_activitypub_outbox_url(max_id: @statuses.last.id) if @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) |
|
|
|
unless @statuses.empty? |
|
if @statuses.first.id == 1 |
|
@prev_path = api_activitypub_outbox_url |
|
elsif params[:max_id] |
|
@prev_path = api_activitypub_outbox_url(since_id: @statuses.first.id) |
|
end |
|
end |
|
|
|
@paginated = @next_path || @prev_path |
|
|
|
set_pagination_headers(@next_path, @prev_path) |
|
end |
|
|
|
private |
|
|
|
def cache_collection(raw) |
|
super(raw, Status) |
|
end |
|
|
|
def set_account |
|
@account = Account.find(params[:id]) |
|
end |
|
end
|
|
|