commit: 44cb08297c4fd992f3438b8cac99e1364edd4847
parent: bd21afb5edf58a2ce93d0d61ac5ccbada5d857da
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Sat, 27 May 2017 00:53:38 +0200
Fix some nil errors (#3338)
* Fix nil input not handled well in AuthorExtractor concern
* Fix hard error in ProcessFeedService when replied-to status has been deleted
* Fix nil errors in ProcessInteractionService when favourited status
cannot be found
Diffstat:
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/app/services/concerns/author_extractor.rb b/app/services/concerns/author_extractor.rb
@@ -2,6 +2,8 @@
module AuthorExtractor
def author_from_xml(xml)
+ return nil if xml.nil?
+
# Try <email> for acct
acct = xml.at_xpath('./xmlns:author/xmlns:email', xmlns: TagManager::XMLNS)&.content
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb
@@ -189,7 +189,7 @@ class ProcessFeedService < BaseService
def find_status(uri)
if TagManager.instance.local_id?(uri)
local_id = TagManager.instance.unique_tag_to_local_id(uri, 'Status')
- return Status.find(local_id)
+ return Status.find_by(id: local_id)
end
Status.find_by(uri: uri)
diff --git a/app/services/process_interaction_service.rb b/app/services/process_interaction_service.rb
@@ -108,12 +108,18 @@ class ProcessInteractionService < BaseService
def favourite!(xml, from_account)
current_status = status(xml)
+
+ return if current_status.nil?
+
favourite = current_status.favourites.where(account: from_account).first_or_create!(account: from_account)
NotifyService.new.call(current_status.account, favourite)
end
def unfavourite!(xml, from_account)
current_status = status(xml)
+
+ return if current_status.nil?
+
favourite = current_status.favourites.where(account: from_account).first
favourite&.destroy
end