about summary refs log tree commit diff
path: root/app/services/fetch_remote_resource_service.rb
diff options
context:
space:
mode:
authorYamagishi Kazutoshi <ykzts@desire.sh>2017-08-14 21:08:34 +0900
committerEugen Rochko <eugen@zeonfederated.com>2017-08-14 14:08:34 +0200
commit5f22c0189d52383f0226622997d8282e9f387f3b (patch)
treeae4720b84517331a9784cbd691ce940b9ddc33ec /app/services/fetch_remote_resource_service.rb
parent26d26644ac217d770ad2b3f6df6966501842f18b (diff)
Add support for searching AP users (#4599)
* Add support for searching AP users

* use JsonLdHelper
Diffstat (limited to 'app/services/fetch_remote_resource_service.rb')
-rw-r--r--app/services/fetch_remote_resource_service.rb31
1 files changed, 26 insertions, 5 deletions
diff --git a/app/services/fetch_remote_resource_service.rb b/app/services/fetch_remote_resource_service.rb
index 6e5830b0d..341664272 100644
--- 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