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.

101 lines
2.1 KiB

  1. module AtomHelper
  2. def stream_updated_at
  3. @account.stream_entries.last ? @account.stream_entries.last.created_at : @account.updated_at
  4. end
  5. def entry(xml, is_root, &block)
  6. if is_root
  7. root_tag(xml, :entry, &block)
  8. else
  9. xml.entry &block
  10. end
  11. end
  12. def feed(xml, &block)
  13. root_tag(xml, :feed, &block)
  14. end
  15. def unique_id(xml, date, id, type)
  16. xml.id_ unique_tag(date, id, type)
  17. end
  18. def simple_id(xml, id)
  19. xml.id_ id
  20. end
  21. def published_at(xml, date)
  22. xml.published date.iso8601
  23. end
  24. def updated_at(xml, date)
  25. xml.updated date.iso8601
  26. end
  27. def verb(xml, verb)
  28. xml['activity'].send('verb', "http://activitystrea.ms/schema/1.0/#{verb}")
  29. end
  30. def content(xml, content)
  31. xml.content({ type: 'html' }, content)
  32. end
  33. def title(xml, title)
  34. xml.title title
  35. end
  36. def author(xml, &block)
  37. xml.author &block
  38. end
  39. def target(xml, &block)
  40. xml['activity'].object &block
  41. end
  42. def object_type(xml, type)
  43. xml['activity'].send('object-type', "http://activitystrea.ms/schema/1.0/#{type}")
  44. end
  45. def uri(xml, uri)
  46. xml.uri uri
  47. end
  48. def name(xml, name)
  49. xml.name name
  50. end
  51. def summary(xml, summary)
  52. xml.summary summary
  53. end
  54. def subtitle(xml, subtitle)
  55. xml.subtitle subtitle
  56. end
  57. def link_alternate(xml, url)
  58. xml.link(rel: 'alternate', type: 'text/html', href: url)
  59. end
  60. def link_self(xml, url)
  61. xml.link(rel: 'self', type: 'application/atom+xml', href: url)
  62. end
  63. def link_hub(xml, url)
  64. xml.link(rel: 'hub', href: url)
  65. end
  66. def link_salmon(xml, url)
  67. xml.link(rel: 'salmon', href: url)
  68. end
  69. def portable_contact(xml, account)
  70. xml['poco'].preferredUsername account.username
  71. xml['poco'].displayName account.display_name
  72. xml['poco'].note account.note
  73. end
  74. private
  75. def root_tag(xml, tag, &block)
  76. xml.send(tag, {xmlns: 'http://www.w3.org/2005/Atom', 'xmlns:thr': 'http://purl.org/syndication/thread/1.0', 'xmlns:activity': 'http://activitystrea.ms/spec/1.0/', 'xmlns:poco': 'http://portablecontacts.net/spec/1.0'}, &block)
  77. end
  78. end