2016-11-15 17:56:29 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-02-24 13:57:29 +02:00
|
|
|
class SendInteractionService < BaseService
|
|
|
|
# Send an Atom representation of an interaction to a remote Salmon endpoint
|
|
|
|
# @param [StreamEntry] stream_entry
|
|
|
|
# @param [Account] target_account
|
|
|
|
def call(stream_entry, target_account)
|
2016-02-28 16:46:29 +02:00
|
|
|
envelope = salmon.pack(entry_xml(stream_entry), stream_entry.account.keypair)
|
2016-02-24 13:57:29 +02:00
|
|
|
salmon.post(target_account.salmon_url, envelope)
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def entry_xml(stream_entry)
|
|
|
|
Nokogiri::XML::Builder.new do |xml|
|
|
|
|
entry(xml, true) do
|
|
|
|
author(xml) do
|
|
|
|
include_author xml, stream_entry.account
|
|
|
|
end
|
|
|
|
|
|
|
|
include_entry xml, stream_entry
|
|
|
|
end
|
|
|
|
end.to_xml
|
|
|
|
end
|
|
|
|
|
|
|
|
def salmon
|
|
|
|
@salmon ||= OStatus2::Salmon.new
|
|
|
|
end
|
|
|
|
end
|