diff options
author | Matt Jankowski <mjankowski@thoughtbot.com> | 2017-05-05 11:26:04 -0400 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-05-05 17:26:04 +0200 |
commit | 20c37ed0f988298de75a3c41472222076806d243 (patch) | |
tree | 9fd1d3a688483e2fbc26e5ec02586db1ce7602b4 /app/services/fetch_remote_resource_service.rb | |
parent | 9501a877048a34627155b04b75a9c75fdbb25cb9 (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.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 |