lib/twitter_retry/retryable.rb in twitter_retry-0.1.0 vs lib/twitter_retry/retryable.rb in twitter_retry-0.2.0
- old
+ new
@@ -28,25 +28,42 @@
end
# whether retryable error
# @param error [Exception]
def retryable?(error)
- TwitterRetry.config.retryable_errors.any? do |error_class, message|
- error.is_a?(error_class) && error.message.include?(message)
- end
+ match_any_error?(error, TwitterRetry.config.retryable_errors)
end
# whether ignorable error
# @param error [Exception]
def ignorable?(error)
- TwitterRetry.config.ignorable_errors.any? do |error_class, message|
- error.is_a?(error_class) && error.message.include?(message)
- end
+ match_any_error?(error, TwitterRetry.config.ignorable_errors)
end
# whether suspended user error
def suspended?(error)
error.is_a?(Twitter::Error::Forbidden) &&
error.message.include?("Your account is suspended and is not permitted to access this feature.")
+ end
+
+ private
+
+ def match_any_error?(source_error, check_errors)
+ check_errors.any? do |error_class, message|
+ match_error?(source_error, error_class, message)
+ end
+ end
+
+ def match_error?(source_error, error_class, message)
+ return false unless source_error.is_a?(error_class)
+
+ # Check only error class
+ return true unless message
+
+ if message.is_a?(Regexp)
+ source_error.message =~ message
+ else
+ source_error.message.include?(message)
+ end
end
end
end