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