commit: 5f22c0189d52383f0226622997d8282e9f387f3b
parent: 26d26644ac217d770ad2b3f6df6966501842f18b
Author: Yamagishi Kazutoshi <ykzts@desire.sh>
Date: Mon, 14 Aug 2017 21:08:34 +0900
Add support for searching AP users (#4599)
* Add support for searching AP users
* use JsonLdHelper
Diffstat:
4 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb
@@ -3,13 +3,12 @@
class FetchRemoteAccountService < BaseService
include AuthorExtractor
- def call(url, prefetched_body = nil)
+ def call(url, prefetched_body = nil, protocol = :ostatus)
if prefetched_body.nil?
resource_url, body, protocol = FetchAtomService.new.call(url)
else
resource_url = url
body = prefetched_body
- protocol = :ostatus
end
case protocol
diff --git a/app/services/fetch_remote_resource_service.rb b/app/services/fetch_remote_resource_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class FetchRemoteResourceService < BaseService
+ include JsonLdHelper
+
attr_reader :url
def call(url)
@@ -14,11 +16,11 @@ class FetchRemoteResourceService < BaseService
private
def process_url
- case xml_root
- when 'feed'
- FetchRemoteAccountService.new.call(atom_url, body)
- when 'entry'
- FetchRemoteStatusService.new.call(atom_url, body)
+ case type
+ when 'Person'
+ FetchRemoteAccountService.new.call(atom_url, body, protocol)
+ when 'Note'
+ FetchRemoteStatusService.new.call(atom_url, body, protocol)
end
end
@@ -34,6 +36,25 @@ class FetchRemoteResourceService < BaseService
fetched_atom_feed.second
end
+ def protocol
+ fetched_atom_feed.third
+ end
+
+ def type
+ return json_data['type'] if protocol == :activitypub
+
+ case xml_root
+ when 'feed'
+ 'Person'
+ when 'entry'
+ 'Note'
+ end
+ end
+
+ def json_data
+ @_json_data ||= body_to_json(body)
+ end
+
def xml_root
xml_data.root.name
end
diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
@@ -3,13 +3,12 @@
class FetchRemoteStatusService < BaseService
include AuthorExtractor
- def call(url, prefetched_body = nil)
+ def call(url, prefetched_body = nil, protocol = :ostatus)
if prefetched_body.nil?
resource_url, body, protocol = FetchAtomService.new.call(url)
else
resource_url = url
body = prefetched_body
- protocol = :ostatus
end
case protocol
diff --git a/spec/services/fetch_remote_resource_service_spec.rb b/spec/services/fetch_remote_resource_service_spec.rb
@@ -30,7 +30,7 @@ describe FetchRemoteResourceService do
_result = subject.call(url)
- expect(account_service).to have_received(:call).with(feed_url, feed_content)
+ expect(account_service).to have_received(:call).with(feed_url, feed_content, nil)
end
it 'fetches remote statuses for entry types' do
@@ -47,7 +47,7 @@ describe FetchRemoteResourceService do
_result = subject.call(url)
- expect(account_service).to have_received(:call).with(feed_url, feed_content)
+ expect(account_service).to have_received(:call).with(feed_url, feed_content, nil)
end
end
end