/** * Handle a twitter exception, waiting the appropriate amount of time if the * API requests this behaviour * * @param e * @param errorWaitTime * @return the errorWaitTime */ public static long handleTwitterException(TwitterException e, long errorWaitTime) { if (e.exceededRateLimitation()) { long retryAfter = e.getRetryAfter() * 1000; logger.debug(String.format("Rate limit exceeded, waiting %dms", retryAfter)); if (retryAfter < 0) { retryAfter = errorWaitTime * 5; } return retryAfter; } else { logger.error("Twitter Exception!", e); logger.error("Waiting a short period of time"); return errorWaitTime; } } }
/** * Handle a twitter exception, waiting the appropriate amount of time if the * API requests this behaviour * * @param e * @param errorWaitTime * @return the errorWaitTime */ public static long handleTwitterException(TwitterException e, long errorWaitTime) { if (e.exceededRateLimitation()) { long retryAfter = e.getRetryAfter() * 1000; logger.debug(String.format("Rate limit exceeded, waiting %dms", retryAfter)); if (retryAfter < 0) { retryAfter = errorWaitTime * 5; } return retryAfter; } else { logger.error("Twitter Exception!", e); logger.error("Waiting a short period of time"); return errorWaitTime; } } }
@Override public Tweet showStatus(Long id) throws TwitterApiException { try { Status status = twitter.showStatus(id); Tweet.Builder tweetBuilder = new Tweet.Builder() .body(status.getText()) .datePosted(new DateTime(status.getCreatedAt())) .id(id) .poster(status.getUser().getScreenName()); prepareEntities(status, tweetBuilder); return tweetBuilder.build(); } catch (TwitterException e) { throw new TwitterApiException(e, e.exceededRateLimitation(), (e.getRateLimitStatus() != null && e.getRateLimitStatus().getSecondsUntilReset() > 0) ? e.getRateLimitStatus().getSecondsUntilReset() * 1000 : 0, e.getErrorCode()); } }