protected JSONArray getNextIssues(Integer page, Instant since) throws InterruptedException {
HttpResponse<JsonNode> jsonResponse;
try {
jsonResponse = getNextIssuesAPI(page, since);
// deal with headers in any case
Headers headers = jsonResponse.getHeaders();
XRateLimit = Integer.valueOf(headers.getFirst("X-RateLimit-Limit"));
XRateRemaining = Integer.valueOf(headers.getFirst("X-RateLimit-Remaining"));
XRateReset = Integer.valueOf(headers.getFirst("X-RateLimit-Reset"));
switch (jsonResponse.getStatus()){
case 200:
return jsonResponse.getBody().getArray();
case 401:
throw new ConnectException("Bad GitHub credentials provided, please edit your config");
case 403:
// we have issues too many requests.
log.info(jsonResponse.getBody().getObject().getString("message"));
log.info(String.format("Your rate limit is %s", XRateLimit));
log.info(String.format("Your remaining calls is %s", XRateRemaining));
log.info(String.format("The limit will reset at %s",
LocalDateTime.ofInstant(Instant.ofEpochSecond(XRateReset), ZoneOffset.systemDefault())));
long sleepTime = XRateReset - Instant.now().getEpochSecond();
log.info(String.format("Sleeping for %s seconds", sleepTime ));
Thread.sleep(1000 * sleepTime);
return getNextIssues(page, since);
default:
log.error(constructUrl(page, since));
log.error(String.valueOf(jsonResponse.getStatus()));
log.error(jsonResponse.getBody().toString());
log.error(jsonResponse.getHeaders().toString());
log.error("Unknown error: Sleeping 5 seconds " +
"before re-trying");
Thread.sleep(5000L);
return getNextIssues(page, since);
}
} catch (UnirestException e) {
e.printStackTrace();
Thread.sleep(5000L);
return new JSONArray();
}
}
GitHubAPIHttpClient.java 文件源码
java
阅读 33
收藏 0
点赞 0
评论 0
项目:kafka-connect-github-source
作者:
评论列表
文章目录