Add support for searching AP users (#4599)
* Add support for searching AP users * use JsonLdHelper
This commit is contained in:
parent
5bc37d814f
commit
ac7fb7c820
4 changed files with 30 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue