summaryrefslogtreecommitdiffstats
path: root/app/services/fetch_remote_status_service.rb
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>2017-10-04 08:13:48 +0900
committerEugen Rochko <eugen@zeonfederated.com>2017-10-04 01:13:48 +0200
commit63f097979990bf5ba9db848b8a253056bad781af (patch)
treea1681de3a9e40b977adbf4c54332e4ab787bd13e /app/services/fetch_remote_status_service.rb
parentec13cfa4f940e9f9441ceff1f7389bb0e1bd61fb (diff)
Validate id of ActivityPub representations (#5114)
Additionally, ActivityPub::FetchRemoteStatusService no longer parses activities. OStatus::Activity::Creation no longer delegates to ActivityPub because the provided ActivityPub representations are not signed while OStatus representations are.
Diffstat (limited to 'app/services/fetch_remote_status_service.rb')
-rw-r--r--app/services/fetch_remote_status_service.rb16
1 files changed, 8 insertions, 8 deletions
diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
index 1b90854c4aa..cacf6ba5132 100644
--- a/app/services/fetch_remote_status_service.rb
+++ b/app/services/fetch_remote_status_service.rb
@@ -5,26 +5,26 @@ class FetchRemoteStatusService < BaseService
def call(url, prefetched_body = nil, protocol = :ostatus)
if prefetched_body.nil?
- resource_url, body, protocol = FetchAtomService.new.call(url)
+ resource_url, resource_options, protocol = FetchAtomService.new.call(url)
else
- resource_url = url
- body = prefetched_body
+ resource_url = url
+ resource_options = { prefetched_body: prefetched_body }
end
case protocol
when :ostatus
- process_atom(resource_url, body)
+ process_atom(resource_url, **resource_options)
when :activitypub
- ActivityPub::FetchRemoteStatusService.new.call(resource_url, body)
+ ActivityPub::FetchRemoteStatusService.new.call(resource_url, **resource_options)
end
end
private
- def process_atom(url, body)
+ def process_atom(url, prefetched_body:)
Rails.logger.debug "Processing Atom for remote status at #{url}"
- xml = Nokogiri::XML(body)
+ xml = Nokogiri::XML(prefetched_body)
xml.encoding = 'utf-8'
account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: OStatus::TagManager::XMLNS))
@@ -32,7 +32,7 @@ class FetchRemoteStatusService < BaseService
return nil unless !account.nil? && confirmed_domain?(domain, account)
- statuses = ProcessFeedService.new.call(body, account)
+ statuses = ProcessFeedService.new.call(prefetched_body, account)
statuses.first
rescue Nokogiri::XML::XPath::SyntaxError
Rails.logger.debug 'Invalid XML or missing namespace'