diff options
Diffstat (limited to 'app/services/fetch_remote_resource_service.rb')
-rw-r--r-- | app/services/fetch_remote_resource_service.rb | 37 |
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 |