From 20c37ed0f988298de75a3c41472222076806d243 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 5 May 2017 11:26:04 -0400 Subject: 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 --- app/services/fetch_remote_resource_service.rb | 37 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'app/services/fetch_remote_resource_service.rb') 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 -- cgit