about summary refs log tree commit diff
path: root/app/services/fetch_remote_resource_service.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-03-22 02:32:27 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-03-22 02:32:27 +0100
commit05cf086766396745219582951f9b792ac5ed2bfb (patch)
tree8ea8471b0565847f41fca533d0e100b181593fa0 /app/services/fetch_remote_resource_service.rb
parent98571b0ce4b63c5ce4198681fa4e3800938f4c9e (diff)
New API method: /api/v1/search
Returns accounts, statuses, hashtags arrays
Diffstat (limited to 'app/services/fetch_remote_resource_service.rb')
-rw-r--r--app/services/fetch_remote_resource_service.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/app/services/fetch_remote_resource_service.rb b/app/services/fetch_remote_resource_service.rb
new file mode 100644
index 000000000..80aa74365
--- /dev/null
+++ b/app/services/fetch_remote_resource_service.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class FetchRemoteResourceService < BaseService
+  def call(url)
+    atom_url, body = FetchAtomService.new.call(url)
+
+    return nil if atom_url.nil?
+
+    xml = Nokogiri::XML(body)
+    xml.encoding = 'utf-8'
+
+    if xml.root.name == 'feed'
+      FetchRemoteAccountService.new.call(atom_url)
+    elsif xml.root.name == 'entry'
+      FetchRemoteStatusService.new.call(atom_url)
+    end
+  end
+end