73 lines
2.4 KiB
Java
73 lines
2.4 KiB
Java
package fr.xephi.authme.task;
|
|
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.JsonParser;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.net.HttpURLConnection;
|
|
import java.net.URI;
|
|
import java.net.URL;
|
|
|
|
public class Updater {
|
|
private final String currentVersion;
|
|
private String latestVersion;
|
|
private static boolean isUpdateAvailable = false;
|
|
private static final String owner = "HaHaWTH";
|
|
private static final String repo = "AuthMeReReloaded";
|
|
private static final String UPDATE_URL = "https://api.github.com/repos/" + owner + "/" + repo + "/releases/latest";
|
|
|
|
public Updater(String currentVersion) {
|
|
this.currentVersion = currentVersion;
|
|
}
|
|
|
|
|
|
/**
|
|
* Check if there is an update available
|
|
* Note: This method will perform a network request!
|
|
*
|
|
* @return true if there is an update available, false otherwise
|
|
*/
|
|
public boolean isUpdateAvailable() {
|
|
URI uri = URI.create(UPDATE_URL);
|
|
try {
|
|
URL url = uri.toURL();
|
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
conn.setConnectTimeout(10000);
|
|
conn.setReadTimeout(10000);
|
|
conn.setRequestMethod("GET");
|
|
conn.setRequestProperty("Accept", "application/vnd.github+json");
|
|
try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) {
|
|
JsonObject jsonObject = new JsonParser().parse(reader).getAsJsonObject();
|
|
String latest = jsonObject.get("tag_name").getAsString();
|
|
latestVersion = latest;
|
|
isUpdateAvailable = !currentVersion.equals(latest);
|
|
reader.close();
|
|
return isUpdateAvailable;
|
|
}
|
|
} catch (IOException ignored) {
|
|
this.latestVersion = null;
|
|
isUpdateAvailable = false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public String getLatestVersion() {
|
|
return latestVersion;
|
|
}
|
|
|
|
public String getCurrentVersion() {
|
|
return currentVersion;
|
|
}
|
|
|
|
/**
|
|
* Returns true if there is an update available, false otherwise
|
|
* Must be called after {@link Updater#isUpdateAvailable()}
|
|
*
|
|
* @return A boolean indicating whether there is an update available
|
|
*/
|
|
public static boolean hasUpdate() {
|
|
return isUpdateAvailable;
|
|
}
|
|
}
|