The code powering m.abunchtell.com https://m.abunchtell.com
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

52 linhas
1.2 KiB

  1. # frozen_string_literal: true
  2. class ActivityPub::CollectionsController < Api::BaseController
  3. include SignatureVerification
  4. include AccountOwnedConcern
  5. before_action :set_size
  6. before_action :set_statuses
  7. before_action :set_cache_headers
  8. def show
  9. expires_in 3.minutes, public: true
  10. render json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter, skip_activities: true
  11. end
  12. private
  13. def set_statuses
  14. @statuses = scope_for_collection
  15. @statuses = cache_collection(@statuses, Status)
  16. end
  17. def set_size
  18. case params[:id]
  19. when 'featured'
  20. @account.pinned_statuses.count
  21. else
  22. raise ActiveRecord::RecordNotFound
  23. end
  24. end
  25. def scope_for_collection
  26. case params[:id]
  27. when 'featured'
  28. @account.statuses.permitted_for(@account, signed_request_account).tap do |scope|
  29. scope.merge!(@account.pinned_statuses)
  30. end
  31. else
  32. raise ActiveRecord::RecordNotFound
  33. end
  34. end
  35. def collection_presenter
  36. ActivityPub::CollectionPresenter.new(
  37. id: account_collection_url(@account, params[:id]),
  38. type: :ordered,
  39. size: @size,
  40. items: @statuses
  41. )
  42. end
  43. end