forked from mirrors/catstodon
41 lines
698 B
Ruby
41 lines
698 B
Ruby
# frozen_string_literal: true
|
|
|
|
class FetchRemoteResourceService < BaseService
|
|
attr_reader :url
|
|
|
|
def call(url)
|
|
@url = url
|
|
process_url unless fetched_atom_feed.nil?
|
|
end
|
|
|
|
private
|
|
|
|
def process_url
|
|
case xml_root
|
|
when 'feed'
|
|
FetchRemoteAccountService.new.call(atom_url, body)
|
|
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
|