about summary refs log tree commit diff
path: root/app/services/fetch_remote_resource_service.rb
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-05-05 11:26:04 -0400
committerEugen Rochko <eugen@zeonfederated.com>2017-05-05 17:26:04 +0200
commit20c37ed0f988298de75a3c41472222076806d243 (patch)
tree9fd1d3a688483e2fbc26e5ec02586db1ce7602b4 /app/services/fetch_remote_resource_service.rb
parent9501a877048a34627155b04b75a9c75fdbb25cb9 (diff)
Add specs (and refactor) of FetchRemoteResourceService and SearchService (#2812)
* Coverage for fetch remote resource service

* Refactor fetch remote resource service

* Coverage for search service

* Refactor search service
Diffstat (limited to 'app/services/fetch_remote_resource_service.rb')
-rw-r--r--app/services/fetch_remote_resource_service.rb37
1 files changed, 30 insertions, 7 deletions
diff --git a/app/services/fetch_remote_resource_service.rb b/app/services/fetch_remote_resource_service.rb
index 2185ceb20..a0c270673 100644
--- a/app/services/fetch_remote_resource_service.rb
+++ b/app/services/fetch_remote_resource_service.rb
@@ -1,18 +1,41 @@
 # frozen_string_literal: true
 
 class FetchRemoteResourceService < BaseService
-  def call(url)
-    atom_url, body = FetchAtomService.new.call(url)
+  attr_reader :url
 
-    return nil if atom_url.nil?
+  def call(url)
+    @url = url
+    process_url unless atom_url.nil?
+  end
 
-    xml = Nokogiri::XML(body)
-    xml.encoding = 'utf-8'
+  private
 
-    if xml.root.name == 'feed'
+  def process_url
+    case xml_root
+    when 'feed'
       FetchRemoteAccountService.new.call(atom_url, body)
-    elsif xml.root.name == 'entry'
+    when 'entry'
       FetchRemoteStatusService.new.call(atom_url, body)
     end
   end
+
+  def fetched_atom_feed
+    @_fetched_atom_feed ||= FetchAtomService.new.call(url)
+  end
+
+  def atom_url
+    fetched_atom_feed.first
+  end
+
+  def body
+    fetched_atom_feed.last
+  end
+
+  def xml_root
+    xml_data.root.name
+  end
+
+  def xml_data
+    @_xml_data ||= Nokogiri::XML(body, nil, 'utf-8')
+  end
 end