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.

33 lines
1.5 KiB

  1. RSS::Builder.build do |doc|
  2. doc.title("##{@tag.display_name}")
  3. doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.display_name))
  4. doc.link(tag_url(@tag))
  5. doc.last_build_date(@statuses.first.created_at) if @statuses.any?
  6. doc.generator("Mastodon v#{Mastodon::Version}")
  7. @statuses.each do |status|
  8. doc.item do |item|
  9. item.link(ActivityPub::TagManager.instance.url_for(status))
  10. item.pub_date(status.created_at)
  11. item.description(rss_status_content_format(status))
  12. if status.ordered_media_attachments.first&.audio?
  13. media = status.ordered_media_attachments.first
  14. item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
  15. end
  16. status.ordered_media_attachments.each do |media_attachment|
  17. item.media_content(full_asset_url(media_attachment.file.url(:original, false)), media_attachment.file.content_type, media_attachment.file.size) do |media_content|
  18. media_content.medium(media_attachment.gifv? ? 'image' : media_attachment.type.to_s)
  19. media_content.rating(status.sensitive? ? 'adult' : 'nonadult')
  20. media_content.description(media_attachment.description) if media_attachment.description.present?
  21. media_content.thumbnail(media_attachment.thumbnail.url(:original, false)) if media_attachment.thumbnail?
  22. end
  23. end
  24. status.tags.each do |tag|
  25. item.category(tag.display_name)
  26. end
  27. end
  28. end
  29. end