@Service
public class ModrinthUpdater {
private static final String MODRINTH_ID = "rj9SgaYL";
private static final String API = "https://api.modrinth.com/v3/project/%s/version";
public CompletableFuture<Optional<Version>> check() {
return CompletableFuture.supplyAsync(() -> {
try (var client = HttpClient.newHttpClient()) {
var req = HttpRequest.newBuilder()
.uri(URI.create(API.formatted(MODRINTH_ID)))
.header("User-Agent", "VaultEconomy/2.1 (admin@you.com)")
.timeout(Duration.ofSeconds(15))
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
JsonArray arr = new Gson().fromJson(res.body(), JsonArray.class);
Version latest = filterChannel(arr, channel, semverComparator);
if (latest.isNewerThan(current)) {
return Optional.of(latest);
}
} catch (Exception e) {
logger.warn("Could not check for updates", e);
}
return Optional.empty();
});
}
}