2017-04-18 18:41:51 +02:00
|
|
|
defmodule Pleroma.Web.OStatus.FeedRepresenter do
|
|
|
|
alias Pleroma.Web.OStatus
|
2017-04-20 10:16:06 +02:00
|
|
|
alias Pleroma.Web.OStatus.{UserRepresenter, ActivityRepresenter}
|
2017-04-18 18:41:51 +02:00
|
|
|
|
|
|
|
def to_simple_form(user, activities, users) do
|
2017-04-23 10:38:24 +02:00
|
|
|
most_recent_update = (List.first(activities) || user).updated_at
|
2017-04-18 18:41:51 +02:00
|
|
|
|> NaiveDateTime.to_iso8601
|
|
|
|
|
|
|
|
h = fn(str) -> [to_charlist(str)] end
|
|
|
|
|
2017-04-20 10:16:06 +02:00
|
|
|
entries = Enum.map(activities, fn(activity) ->
|
|
|
|
{:entry, ActivityRepresenter.to_simple_form(activity, user)}
|
|
|
|
end)
|
2017-04-22 14:37:54 +02:00
|
|
|
|> Enum.filter(fn ({_, form}) -> form end)
|
2017-04-20 10:16:06 +02:00
|
|
|
|
2017-04-18 18:41:51 +02:00
|
|
|
[{
|
|
|
|
:feed, [
|
|
|
|
xmlns: 'http://www.w3.org/2005/Atom',
|
2017-04-30 11:17:34 +02:00
|
|
|
"xmlns:thr": 'http://purl.org/syndication/thread/1.0',
|
2017-04-22 15:11:13 +02:00
|
|
|
"xmlns:activity": 'http://activitystrea.ms/spec/1.0/',
|
2017-04-26 08:47:22 +02:00
|
|
|
"xmlns:poco": 'http://portablecontacts.net/spec/1.0',
|
|
|
|
"xmlns:ostatus": 'http://ostatus.org/schema/1.0'
|
2017-04-18 18:41:51 +02:00
|
|
|
], [
|
|
|
|
{:id, h.(OStatus.feed_path(user))},
|
|
|
|
{:title, ['#{user.nickname}\'s timeline']},
|
|
|
|
{:updated, h.(most_recent_update)},
|
2017-04-20 17:47:33 +02:00
|
|
|
{:link, [rel: 'hub', href: h.(OStatus.pubsub_path(user))], []},
|
2017-04-24 18:46:34 +02:00
|
|
|
{:link, [rel: 'salmon', href: h.(OStatus.salmon_path(user))], []},
|
2017-05-01 18:40:36 +02:00
|
|
|
{:link, [rel: 'self', href: h.(OStatus.feed_path(user)), type: 'application/atom+xml'], []},
|
2017-04-22 12:11:36 +02:00
|
|
|
{:author, UserRepresenter.to_simple_form(user)},
|
2017-04-20 10:16:06 +02:00
|
|
|
] ++ entries
|
2017-04-18 18:41:51 +02:00
|
|
|
}]
|
|
|
|
end
|
|
|
|
end
|