package com.airbnb.chancery;
import com.airbnb.chancery.github.GithubClient;
import com.airbnb.chancery.model.RateLimitStats;
import com.yammer.metrics.core.HealthCheck;
public class GithubClientHealthCheck extends HealthCheck {
private final GithubClient client;
protected GithubClientHealthCheck(final GithubClient client) {
super("github");
this.client = client;
}
@Override
protected Result check() throws Exception {
final RateLimitStats data = client.getRateLimitData();
final float ratio = (float) data.getRemaining() / (float) data.getLimit();
if (ratio < 0.5)
return Result.unhealthy("Running low on API quota: %d/%d (%.2f%%) left",
data.getRemaining(),
data.getLimit(),
100.0 * ratio);
else
return Result.healthy("Checked API quota & still high: %d/%d (%.2f%%) left",
data.getRemaining(),
data.getLimit(),
100.0 * ratio);
}
}