Files
ServerAdmin/src/main/java/com/rsscripting/serveradmin/update/GitHubUpdateChecker.java
T

121 lines
3.2 KiB
Java

package com.rsscripting.serveradmin.update;
import org.bukkit.plugin.java.JavaPlugin;
import javax.xml.parsers.DocumentBuilderFactory;
import java.net.URL;
public class GitHubUpdateChecker {
private final JavaPlugin plugin;
private final String pomUrl;
private static final String POM_URL =
"https://raw.githubusercontent.com/RS-Scripting/RS-ServerAdmin/main/pom.xml";
public GitHubUpdateChecker(
JavaPlugin plugin
) {
this.plugin = plugin;
this.pomUrl = POM_URL;
}
public void checkForUpdates() {
plugin.getServer()
.getScheduler()
.runTaskAsynchronously(
plugin,
() -> {
try {
String currentVersion =
plugin.getDescription()
.getVersion();
String latestVersion =
getLatestVersion();
if (latestVersion == null) {
plugin.getLogger().warning(
"Unable to determine latest version."
);
return;
}
if (currentVersion.equals(
latestVersion
)) {
plugin.getLogger().info(
"RS-ServerAdmin is up to date."
);
} else {
plugin.getLogger().warning(
"Update available! Current: "
+ currentVersion
+ " Latest: "
+ latestVersion
);
}
} catch (Exception ex) {
plugin.getLogger().warning(
"Update check failed."
);
}
}
);
}
private String getLatestVersion()
throws Exception {
URL url =
new URL(
POM_URL
);
var document =
DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(
url.openStream()
);
var versions =
document.getElementsByTagName(
"version"
);
if (versions.getLength() == 0) {
return null;
}
return versions
.item(0)
.getTextContent()
.trim();
}
}