diff options
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/process_feed_service.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index 1fac60fe5..a566c3a57 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -44,6 +44,11 @@ class ProcessFeedService < BaseService if verb == :share original_status = status_from_xml(@xml.at_xpath('.//activity:object', activity: ACTIVITY_NS)) status.reblog = original_status + + if original_status.nil? + status.destroy + return nil + end end status.save! @@ -68,15 +73,22 @@ class ProcessFeedService < BaseService status = find_status(id(entry)) return status unless status.nil? + begin + account = account?(entry) ? find_or_resolve_account(acct(entry)) : @account + rescue Goldfinger::Error + return nil + end + status = Status.create!({ uri: id(entry), url: url(entry), - account: account?(entry) ? find_or_resolve_account(acct(entry)) : @account, + account: account, text: content(entry), created_at: published(entry), }) if thread?(entry) + Rails.logger.debug "Trying to attach #{status.id} (#{id(entry)}) to #{thread(entry).first}" status.thread = find_or_resolve_status(status, *thread(entry)) end @@ -136,7 +148,7 @@ class ProcessFeedService < BaseService end def hashtags_from_xml(parent, xml) - tags = xml.xpath('./xmlns:category').map { |category| category['term'] } + tags = xml.xpath('./xmlns:category').map { |category| category['term'] }.select { |t| !t.blank? } ProcessHashtagsService.new.call(parent, tags) end |