89 lines
2.7 KiB
Java
89 lines
2.7 KiB
Java
package de.epiceric.shopchest.utils;
|
|
|
|
import java.io.InputStreamReader;
|
|
import java.net.URL;
|
|
import java.net.URLConnection;
|
|
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.JsonParser;
|
|
|
|
import de.epiceric.shopchest.ShopChest;
|
|
|
|
public class UpdateChecker {
|
|
|
|
private ShopChest plugin;
|
|
private String version;
|
|
private String link;
|
|
|
|
public UpdateChecker(ShopChest plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
/**
|
|
* Check if an update is needed
|
|
*
|
|
* @return {@link UpdateCheckerResult#TRUE} if an update is available,
|
|
* {@link UpdateCheckerResult#FALSE} if no update is needed or
|
|
* {@link UpdateCheckerResult#ERROR} if an error occurred
|
|
*/
|
|
public UpdateCheckerResult check() {
|
|
try {
|
|
plugin.debug("Checking for updates...");
|
|
|
|
URL url = new URL("https://api.spiget.org/v2/resources/11431/versions?size=1&page=1&sort=-releaseDate");
|
|
URLConnection conn = url.openConnection();
|
|
conn.setRequestProperty("User-Agent", "ShopChest/UpdateChecker");
|
|
|
|
InputStreamReader reader = new InputStreamReader(conn.getInputStream());
|
|
JsonElement element = new JsonParser().parse(reader);
|
|
|
|
if (element.isJsonArray()) {
|
|
JsonObject result = element.getAsJsonArray().get(0).getAsJsonObject();
|
|
String id = result.get("id").getAsString();
|
|
version = result.get("name").getAsString();
|
|
link = "https://www.spigotmc.org/resources/shopchest.11431/download?version=" + id;
|
|
} else {
|
|
plugin.debug("Failed to check for updates");
|
|
plugin.debug("Result: " + element.toString());
|
|
return UpdateCheckerResult.ERROR;
|
|
}
|
|
|
|
if (plugin.getDescription().getVersion().equals(version)) {
|
|
plugin.debug("No update found");
|
|
return UpdateCheckerResult.FALSE;
|
|
} else {
|
|
plugin.debug("Update found: " + version);
|
|
return UpdateCheckerResult.TRUE;
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
plugin.debug("Failed to check for updates");
|
|
plugin.debug(e);
|
|
return UpdateCheckerResult.ERROR;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return Latest Version or <b>null</b> if no update is available
|
|
*/
|
|
public String getVersion() {
|
|
return version;
|
|
}
|
|
|
|
/**
|
|
* @return Download Link of the latest version of <b>null</b> if no update is available
|
|
*/
|
|
public String getLink() {
|
|
return link;
|
|
}
|
|
|
|
public enum UpdateCheckerResult {
|
|
TRUE,
|
|
FALSE,
|
|
ERROR
|
|
}
|
|
|
|
|
|
}
|