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.
59 lines
1.1 KiB
59 lines
1.1 KiB
# frozen_string_literal: true |
|
|
|
class REST::InstanceSerializer < ActiveModel::Serializer |
|
include RoutingHelper |
|
|
|
attributes :uri, :title, :description, :email, |
|
:version, :urls, :stats, :thumbnail, |
|
:languages |
|
|
|
has_one :contact_account, serializer: REST::AccountSerializer |
|
|
|
delegate :contact_account, to: :instance_presenter |
|
|
|
def uri |
|
Rails.configuration.x.local_domain |
|
end |
|
|
|
def title |
|
Setting.site_title |
|
end |
|
|
|
def description |
|
Setting.site_description |
|
end |
|
|
|
def email |
|
Setting.site_contact_email |
|
end |
|
|
|
def version |
|
Mastodon::Version.to_s |
|
end |
|
|
|
def thumbnail |
|
instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('preview.jpg') |
|
end |
|
|
|
def stats |
|
{ |
|
user_count: instance_presenter.user_count, |
|
status_count: instance_presenter.status_count, |
|
domain_count: instance_presenter.domain_count, |
|
} |
|
end |
|
|
|
def urls |
|
{ streaming_api: Rails.configuration.x.streaming_api_base_url } |
|
end |
|
|
|
def languages |
|
[I18n.default_locale] |
|
end |
|
|
|
private |
|
|
|
def instance_presenter |
|
@instance_presenter ||= InstancePresenter.new |
|
end |
|
end
|
|
|