@ -161,13 +161,7 @@ class ProcessFeedService < BaseService
xml . xpath ( './xmlns:link[@rel="mentioned"]' , xmlns : TagManager :: XMLNS ) . each do | link |
xml . xpath ( './xmlns:link[@rel="mentioned"]' , xmlns : TagManager :: XMLNS ) . each do | link |
next if [ TagManager :: TYPES [ :group ] , TagManager :: TYPES [ :collection ] ] . include? link [ 'ostatus:object-type' ]
next if [ TagManager :: TYPES [ :group ] , TagManager :: TYPES [ :collection ] ] . include? link [ 'ostatus:object-type' ]
url = Addressable :: URI . parse ( link [ 'href' ] )
mentioned_account = account_from_href ( link [ 'href' ] )
mentioned_account = if TagManager . instance . web_domain? ( url . host )
Account . find_local ( url . path . gsub ( '/users/' , '' ) )
else
Account . find_by ( url : link [ 'href' ] ) || FetchRemoteAccountService . new . call ( link [ 'href' ] )
end
next if mentioned_account . nil? || processed_account_ids . include? ( mentioned_account . id )
next if mentioned_account . nil? || processed_account_ids . include? ( mentioned_account . id )
@ -178,6 +172,16 @@ class ProcessFeedService < BaseService
end
end
end
end
def account_from_href ( href )
url = Addressable :: URI . parse ( href )
if TagManager . instance . web_domain? ( url . host )
Account . find_local ( url . path . gsub ( '/users/' , '' ) )
else
Account . find_by ( uri : href ) || Account . find_by ( url : href ) || FetchRemoteAccountService . new . call ( href )
end
end
def hashtags_from_xml ( parent , xml )
def hashtags_from_xml ( parent , xml )
tags = xml . xpath ( './xmlns:category' , xmlns : TagManager :: XMLNS ) . map { | category | category [ 'term' ] } . select ( & :present? )
tags = xml . xpath ( './xmlns:category' , xmlns : TagManager :: XMLNS ) . map { | category | category [ 'term' ] } . select ( & :present? )
ProcessHashtagsService . new . call ( parent , tags )
ProcessHashtagsService . new . call ( parent , tags )