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.

77 lines
1.6 KiB

  1. # frozen_string_literal: true
  2. class REST::InstanceSerializer < ActiveModel::Serializer
  3. include RoutingHelper
  4. attributes :uri, :title, :short_description, :description, :email,
  5. :version, :urls, :stats, :thumbnail,
  6. :languages, :registrations, :approval_required, :invites_enabled
  7. has_one :contact_account, serializer: REST::AccountSerializer
  8. has_many :rules, serializer: REST::RuleSerializer
  9. delegate :contact_account, :rules, to: :instance_presenter
  10. def uri
  11. Rails.configuration.x.local_domain
  12. end
  13. def title
  14. Setting.site_title
  15. end
  16. def short_description
  17. Setting.site_short_description
  18. end
  19. def description
  20. Setting.site_description
  21. end
  22. def email
  23. Setting.site_contact_email
  24. end
  25. def version
  26. Mastodon::Version.to_s
  27. end
  28. def thumbnail
  29. instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.jpg')
  30. end
  31. def stats
  32. {
  33. user_count: instance_presenter.user_count,
  34. status_count: instance_presenter.status_count,
  35. domain_count: instance_presenter.domain_count,
  36. }
  37. end
  38. def urls
  39. { streaming_api: Rails.configuration.x.streaming_api_base_url }
  40. end
  41. def languages
  42. [I18n.default_locale]
  43. end
  44. def registrations
  45. Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode
  46. end
  47. def approval_required
  48. Setting.registrations_mode == 'approved'
  49. end
  50. def invites_enabled
  51. Setting.min_invite_role == 'user'
  52. end
  53. private
  54. def instance_presenter
  55. @instance_presenter ||= InstancePresenter.new
  56. end
  57. end