/** * Tests if the exception is caused by rate limitation exceed * * @return if the exception is caused by rate limitation exceed * @see <a href="https://dev.twitter.com/docs/rate-limiting">Rate Limiting | Twitter Developers</a> * @since Twitter4J 2.1.2 */ public boolean exceededRateLimitation() { return (statusCode == 400 && getRateLimitStatus() != null) // REST API || (statusCode == ENHANCE_YOUR_CLAIM) // Streaming API || (statusCode == TOO_MANY_REQUESTS); // API 1.1 }
int retryAfter = -1; if (this.statusCode == 400) { RateLimitStatus rateLimitStatus = getRateLimitStatus(); if (rateLimitStatus != null) { retryAfter = rateLimitStatus.getSecondsUntilReset();
@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()); } }
@Override public String toString() { return getMessage() + (nested ? "" : "\nRelevant discussions can be found on the Internet at:\n" + "\thttp://www.google.co.jp/search?q=" + getExceptionDiagnosis().getStackLineHashAsHex() + " or\n\thttp://www.google.co.jp/search?q=" + getExceptionDiagnosis().getLineNumberHashAsHex()) + "\nTwitterException{" + (nested ? "" : "exceptionCode=[" + getExceptionCode() + "], ") + "statusCode=" + statusCode + ", message=" + errorMessage + ", code=" + errorCode + ", retryAfter=" + getRetryAfter() + ", rateLimitStatus=" + getRateLimitStatus() + ", version=" + Version.getVersion() + '}'; }
int statusCode; if (te != null) { rateLimitStatus = te.getRateLimitStatus(); statusCode = te.getStatusCode(); } else {