The code powering m.abunchtell.com https://m.abunchtell.com
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.
 
 
 
 

108 lines
1.8 KiB

  1. # frozen_string_literal: true
  2. class ActivityPub::ActorSerializer < ActiveModel::Serializer
  3. include RoutingHelper
  4. attributes :id, :type, :following, :followers,
  5. :inbox, :outbox, :featured,
  6. :preferred_username, :name, :summary,
  7. :url, :manually_approves_followers
  8. has_one :public_key, serializer: ActivityPub::PublicKeySerializer
  9. attribute :moved_to, if: :moved?
  10. class EndpointsSerializer < ActiveModel::Serializer
  11. include RoutingHelper
  12. attributes :shared_inbox
  13. def shared_inbox
  14. inbox_url
  15. end
  16. end
  17. has_one :endpoints, serializer: EndpointsSerializer
  18. has_one :icon, serializer: ActivityPub::ImageSerializer, if: :avatar_exists?
  19. has_one :image, serializer: ActivityPub::ImageSerializer, if: :header_exists?
  20. delegate :moved?, to: :object
  21. def id
  22. account_url(object)
  23. end
  24. def type
  25. 'Person'
  26. end
  27. def following
  28. account_following_index_url(object)
  29. end
  30. def followers
  31. account_followers_url(object)
  32. end
  33. def inbox
  34. account_inbox_url(object)
  35. end
  36. def outbox
  37. account_outbox_url(object)
  38. end
  39. def featured
  40. account_collection_url(object, :featured)
  41. end
  42. def endpoints
  43. object
  44. end
  45. def preferred_username
  46. object.username
  47. end
  48. def name
  49. object.display_name
  50. end
  51. def summary
  52. Formatter.instance.simplified_format(object)
  53. end
  54. def icon
  55. object.avatar
  56. end
  57. def image
  58. object.header
  59. end
  60. def public_key
  61. object
  62. end
  63. def url
  64. short_account_url(object)
  65. end
  66. def avatar_exists?
  67. object.avatar.exists?
  68. end
  69. def header_exists?
  70. object.header.exists?
  71. end
  72. def manually_approves_followers
  73. object.locked
  74. end
  75. def moved_to
  76. ActivityPub::TagManager.instance.uri_for(object.moved_to_account)
  77. end
  78. end