|
|
|
@ -15,10 +15,10 @@ class OStatus::AtomSerializer
|
|
|
|
|
def author(account)
|
|
|
|
|
author = Ox::Element.new('author')
|
|
|
|
|
|
|
|
|
|
uri = TagManager.instance.uri_for(account)
|
|
|
|
|
uri = OStatus::TagManager.instance.uri_for(account)
|
|
|
|
|
|
|
|
|
|
append_element(author, 'id', uri)
|
|
|
|
|
append_element(author, 'activity:object-type', TagManager::TYPES[:person])
|
|
|
|
|
append_element(author, 'activity:object-type', OStatus::TagManager::TYPES[:person])
|
|
|
|
|
append_element(author, 'uri', uri)
|
|
|
|
|
append_element(author, 'name', account.username)
|
|
|
|
|
append_element(author, 'email', account.local? ? account.local_username_and_domain : account.acct)
|
|
|
|
@ -65,15 +65,15 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
add_namespaces(entry) if root
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.uri_for(stream_entry.status))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.uri_for(stream_entry.status))
|
|
|
|
|
append_element(entry, 'published', stream_entry.created_at.iso8601)
|
|
|
|
|
append_element(entry, 'updated', stream_entry.updated_at.iso8601)
|
|
|
|
|
append_element(entry, 'title', stream_entry&.status&.title || "#{stream_entry.account.acct} deleted status")
|
|
|
|
|
|
|
|
|
|
entry << author(stream_entry.account) if root
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[stream_entry.object_type])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[stream_entry.verb])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[stream_entry.object_type])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[stream_entry.verb])
|
|
|
|
|
|
|
|
|
|
entry << object(stream_entry.target) if stream_entry.targeted?
|
|
|
|
|
|
|
|
|
@ -88,7 +88,7 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'link', nil, rel: :alternate, type: 'text/html', href: TagManager.instance.url_for(stream_entry.status))
|
|
|
|
|
append_element(entry, 'link', nil, rel: :self, type: 'application/atom+xml', href: account_stream_entry_url(stream_entry.account, stream_entry, format: 'atom'))
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(stream_entry.thread), href: TagManager.instance.url_for(stream_entry.thread)) if stream_entry.threaded?
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(stream_entry.thread), href: TagManager.instance.url_for(stream_entry.thread)) if stream_entry.threaded?
|
|
|
|
|
append_element(entry, 'ostatus:conversation', nil, ref: conversation_uri(stream_entry.status.conversation)) unless stream_entry&.status&.conversation_id.nil?
|
|
|
|
|
|
|
|
|
|
entry
|
|
|
|
@ -97,20 +97,20 @@ class OStatus::AtomSerializer
|
|
|
|
|
def object(status)
|
|
|
|
|
object = Ox::Element.new('activity:object')
|
|
|
|
|
|
|
|
|
|
append_element(object, 'id', TagManager.instance.uri_for(status))
|
|
|
|
|
append_element(object, 'id', OStatus::TagManager.instance.uri_for(status))
|
|
|
|
|
append_element(object, 'published', status.created_at.iso8601)
|
|
|
|
|
append_element(object, 'updated', status.updated_at.iso8601)
|
|
|
|
|
append_element(object, 'title', status.title)
|
|
|
|
|
|
|
|
|
|
object << author(status.account)
|
|
|
|
|
|
|
|
|
|
append_element(object, 'activity:object-type', TagManager::TYPES[status.object_type])
|
|
|
|
|
append_element(object, 'activity:verb', TagManager::VERBS[status.verb])
|
|
|
|
|
append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[status.object_type])
|
|
|
|
|
append_element(object, 'activity:verb', OStatus::TagManager::VERBS[status.verb])
|
|
|
|
|
|
|
|
|
|
serialize_status_attributes(object, status)
|
|
|
|
|
|
|
|
|
|
append_element(object, 'link', nil, rel: :alternate, type: 'text/html', href: TagManager.instance.url_for(status))
|
|
|
|
|
append_element(object, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(status.thread), href: TagManager.instance.url_for(status.thread)) unless status.thread.nil?
|
|
|
|
|
append_element(object, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(status.thread), href: TagManager.instance.url_for(status.thread)) unless status.thread.nil?
|
|
|
|
|
append_element(object, 'ostatus:conversation', nil, ref: conversation_uri(status.conversation)) unless status.conversation_id.nil?
|
|
|
|
|
|
|
|
|
|
object
|
|
|
|
@ -122,14 +122,14 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{follow.account.acct} started following #{follow.target_account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(follow.created_at, follow.id, 'Follow'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(follow.created_at, follow.id, 'Follow'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
append_element(entry, 'content', description, type: :html)
|
|
|
|
|
|
|
|
|
|
entry << author(follow.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:follow])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:follow])
|
|
|
|
|
|
|
|
|
|
object = author(follow.target_account)
|
|
|
|
|
object.value = 'activity:object'
|
|
|
|
@ -142,13 +142,13 @@ class OStatus::AtomSerializer
|
|
|
|
|
entry = Ox::Element.new('entry')
|
|
|
|
|
add_namespaces(entry)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(follow_request.created_at, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(follow_request.created_at, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'title', "#{follow_request.account.acct} requested to follow #{follow_request.target_account.acct}")
|
|
|
|
|
|
|
|
|
|
entry << author(follow_request.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:request_friend])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
|
|
|
|
|
|
|
|
|
|
object = author(follow_request.target_account)
|
|
|
|
|
object.value = 'activity:object'
|
|
|
|
@ -161,19 +161,19 @@ class OStatus::AtomSerializer
|
|
|
|
|
entry = Ox::Element.new('entry')
|
|
|
|
|
add_namespaces(entry)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'title', "#{follow_request.target_account.acct} authorizes follow request by #{follow_request.account.acct}")
|
|
|
|
|
|
|
|
|
|
entry << author(follow_request.target_account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:authorize])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:authorize])
|
|
|
|
|
|
|
|
|
|
object = Ox::Element.new('activity:object')
|
|
|
|
|
object << author(follow_request.account)
|
|
|
|
|
|
|
|
|
|
append_element(object, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(object, 'activity:verb', TagManager::VERBS[:request_friend])
|
|
|
|
|
append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(object, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
|
|
|
|
|
|
|
|
|
|
inner_object = author(follow_request.target_account)
|
|
|
|
|
inner_object.value = 'activity:object'
|
|
|
|
@ -187,19 +187,19 @@ class OStatus::AtomSerializer
|
|
|
|
|
entry = Ox::Element.new('entry')
|
|
|
|
|
add_namespaces(entry)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
|
|
|
|
|
append_element(entry, 'title', "#{follow_request.target_account.acct} rejects follow request by #{follow_request.account.acct}")
|
|
|
|
|
|
|
|
|
|
entry << author(follow_request.target_account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:reject])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:reject])
|
|
|
|
|
|
|
|
|
|
object = Ox::Element.new('activity:object')
|
|
|
|
|
object << author(follow_request.account)
|
|
|
|
|
|
|
|
|
|
append_element(object, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(object, 'activity:verb', TagManager::VERBS[:request_friend])
|
|
|
|
|
append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(object, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
|
|
|
|
|
|
|
|
|
|
inner_object = author(follow_request.target_account)
|
|
|
|
|
inner_object.value = 'activity:object'
|
|
|
|
@ -215,14 +215,14 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{follow.account.acct} is no longer following #{follow.target_account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow.id, 'Follow'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow.id, 'Follow'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
append_element(entry, 'content', description, type: :html)
|
|
|
|
|
|
|
|
|
|
entry << author(follow.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:unfollow])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unfollow])
|
|
|
|
|
|
|
|
|
|
object = author(follow.target_account)
|
|
|
|
|
object.value = 'activity:object'
|
|
|
|
@ -237,13 +237,13 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{block.account.acct} no longer wishes to interact with #{block.target_account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
|
|
|
|
|
entry << author(block.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:block])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:block])
|
|
|
|
|
|
|
|
|
|
object = author(block.target_account)
|
|
|
|
|
object.value = 'activity:object'
|
|
|
|
@ -258,13 +258,13 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{block.account.acct} no longer blocks #{block.target_account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
|
|
|
|
|
entry << author(block.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:unblock])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unblock])
|
|
|
|
|
|
|
|
|
|
object = author(block.target_account)
|
|
|
|
|
object.value = 'activity:object'
|
|
|
|
@ -279,18 +279,18 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{favourite.account.acct} favourited a status by #{favourite.status.account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(favourite.created_at, favourite.id, 'Favourite'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(favourite.created_at, favourite.id, 'Favourite'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
append_element(entry, 'content', description, type: :html)
|
|
|
|
|
|
|
|
|
|
entry << author(favourite.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:favorite])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:favorite])
|
|
|
|
|
|
|
|
|
|
entry << object(favourite.status)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
|
|
|
|
|
|
|
|
|
|
entry
|
|
|
|
|
end
|
|
|
|
@ -301,18 +301,18 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
description = "#{favourite.account.acct} no longer favourites a status by #{favourite.status.account.acct}"
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, favourite.id, 'Favourite'))
|
|
|
|
|
append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, favourite.id, 'Favourite'))
|
|
|
|
|
append_element(entry, 'title', description)
|
|
|
|
|
append_element(entry, 'content', description, type: :html)
|
|
|
|
|
|
|
|
|
|
entry << author(favourite.account)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', TagManager::VERBS[:unfavorite])
|
|
|
|
|
append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
|
|
|
|
|
append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unfavorite])
|
|
|
|
|
|
|
|
|
|
entry << object(favourite.status)
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
|
|
|
|
|
append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
|
|
|
|
|
|
|
|
|
|
entry
|
|
|
|
|
end
|
|
|
|
@ -332,17 +332,17 @@ class OStatus::AtomSerializer
|
|
|
|
|
|
|
|
|
|
def conversation_uri(conversation)
|
|
|
|
|
return conversation.uri if conversation.uri?
|
|
|
|
|
TagManager.instance.unique_tag(conversation.created_at, conversation.id, 'Conversation')
|
|
|
|
|
OStatus::TagManager.instance.unique_tag(conversation.created_at, conversation.id, 'Conversation')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def add_namespaces(parent)
|
|
|
|
|
parent['xmlns'] = TagManager::XMLNS
|
|
|
|
|
parent['xmlns:thr'] = TagManager::THR_XMLNS
|
|
|
|
|
parent['xmlns:activity'] = TagManager::AS_XMLNS
|
|
|
|
|
parent['xmlns:poco'] = TagManager::POCO_XMLNS
|
|
|
|
|
parent['xmlns:media'] = TagManager::MEDIA_XMLNS
|
|
|
|
|
parent['xmlns:ostatus'] = TagManager::OS_XMLNS
|
|
|
|
|
parent['xmlns:mastodon'] = TagManager::MTDN_XMLNS
|
|
|
|
|
parent['xmlns'] = OStatus::TagManager::XMLNS
|
|
|
|
|
parent['xmlns:thr'] = OStatus::TagManager::THR_XMLNS
|
|
|
|
|
parent['xmlns:activity'] = OStatus::TagManager::AS_XMLNS
|
|
|
|
|
parent['xmlns:poco'] = OStatus::TagManager::POCO_XMLNS
|
|
|
|
|
parent['xmlns:media'] = OStatus::TagManager::MEDIA_XMLNS
|
|
|
|
|
parent['xmlns:ostatus'] = OStatus::TagManager::OS_XMLNS
|
|
|
|
|
parent['xmlns:mastodon'] = OStatus::TagManager::MTDN_XMLNS
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def serialize_status_attributes(entry, status)
|
|
|
|
@ -352,10 +352,10 @@ class OStatus::AtomSerializer
|
|
|
|
|
append_element(entry, 'content', Formatter.instance.format(status).to_str, type: 'html', 'xml:lang': status.language)
|
|
|
|
|
|
|
|
|
|
status.mentions.each do |mentioned|
|
|
|
|
|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': TagManager::TYPES[:person], href: TagManager.instance.uri_for(mentioned.account))
|
|
|
|
|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:person], href: OStatus::TagManager.instance.uri_for(mentioned.account))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': TagManager::TYPES[:collection], href: TagManager::COLLECTIONS[:public]) if status.public_visibility?
|
|
|
|
|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:collection], href: OStatus::TagManager::COLLECTIONS[:public]) if status.public_visibility?
|
|
|
|
|
|
|
|
|
|
status.tags.each do |tag|
|
|
|
|
|
append_element(entry, 'category', nil, term: tag.name)
|
|
|
|
|