2017-07-06 22:02:06 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class REST::PreviewCardSerializer < ActiveModel::Serializer
|
2024-06-27 09:17:18 -04:00
|
|
|
class AuthorSerializer < ActiveModel::Serializer
|
|
|
|
attributes :name, :url
|
|
|
|
has_one :account, serializer: REST::AccountSerializer
|
|
|
|
end
|
|
|
|
|
2017-07-06 22:02:06 -04:00
|
|
|
include RoutingHelper
|
|
|
|
|
2023-02-24 14:04:38 -05:00
|
|
|
attributes :url, :title, :description, :language, :type,
|
2017-07-06 22:02:06 -04:00
|
|
|
:author_name, :author_url, :provider_name,
|
|
|
|
:provider_url, :html, :width, :height,
|
2023-08-03 09:41:51 -04:00
|
|
|
:image, :image_description, :embed_url, :blurhash, :published_at
|
2017-07-06 22:02:06 -04:00
|
|
|
|
2024-06-27 09:17:18 -04:00
|
|
|
has_many :authors, serializer: AuthorSerializer
|
2024-05-28 19:34:33 -04:00
|
|
|
|
2023-11-13 04:58:28 -05:00
|
|
|
def url
|
|
|
|
object.original_url.presence || object.url
|
|
|
|
end
|
|
|
|
|
2017-07-06 22:02:06 -04:00
|
|
|
def image
|
|
|
|
object.image? ? full_asset_url(object.image.url(:original)) : nil
|
|
|
|
end
|
2023-07-06 09:03:33 -04:00
|
|
|
|
|
|
|
def html
|
|
|
|
Sanitize.fragment(object.html, Sanitize::Config::MASTODON_OEMBED)
|
|
|
|
end
|
2017-07-06 22:02:06 -04:00
|
|
|
end
|