|
|
- # 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
|