private void grabTrending() { try { if (VERBOSE) { DAO.log("Kaizen is going to get trending topics ..."); } for (Location location : twitter.trends().getAvailableTrends()) { for (Trend trend : twitter.trends().getPlaceTrends(location.getWoeid()).getTrends()) { this.queries.addQuery(trend.getQuery()); } } } catch (TwitterException e) { if (e.getErrorCode() != 88) { DAO.severe(e); } } }
@Override public List<User> getUsers(final Principal principal, final long... ids) throws WTFDYUMException { final List<User> result = new ArrayList<>(); if (ids.length == 0) { return result; } try { final List<twitter4j.User> users = new ArrayList<>(); for (int i = 0; i <= (ids.length - 1) / 100; i++) { final ResponseList<twitter4j.User> lookupUsers = twitter(principal).users() .lookupUsers(Arrays.copyOfRange(ids, i * 100, Math.min((i + 1) * 100, ids.length))); users.addAll(lookupUsers); } for (final twitter4j.User u : users) { result.add(mapper.map(u, User.class)); } } catch (final TwitterException e) { if (e.getErrorCode() == 17) { log.debug("Error while getUsers for ids: " + Arrays.toString(ids) + ". Seems like those users are not on twitter anymore."); } else { log.debug("Error while getUsers for ids: " + Arrays.toString(ids), e); throw new WTFDYUMException(e, WTFDYUMExceptionType.TWITTER_ERROR); } } return result; }
private void verifyCredentials(ResultBuilder builder, Map<String, Object> parameters) throws Exception { try { TwitterConfiguration configuration = setProperties(new TwitterConfiguration(), parameters); Twitter twitter = configuration.getTwitter(); twitter.verifyCredentials(); } catch (TwitterException e) { // verifyCredentials throws TwitterException when Twitter service or // network is unavailable or if supplied credential is wrong ResultErrorBuilder errorBuilder = ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, e.getErrorMessage()) .detail("twitter_error_code", e.getErrorCode()) .detail("twitter_status_code", e.getStatusCode()) .detail("twitter_exception_code", e.getExceptionCode()) .detail("twitter_exception_message", e.getMessage()) .detail("twitter_exception_caused-by-network-issue", e.isCausedByNetworkIssue()) .detail(VerificationError.ExceptionAttribute.EXCEPTION_CLASS, e.getClass().getName()) .detail(VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE, e); // For a complete list of error codes see: // https://dev.twitter.com/overview/api/response-codes if (e.getErrorCode() == 89) { errorBuilder.parameterKey("accessToken"); } builder.error(errorBuilder.build()); } } }
@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()); } }