mcMMO/src/main/java/com/gmail/nossr50/util/UpdateChecker.java
TfT_02 80927417f2 Fix the update checker
Now it's able to parse x.x.x-type-bxxx and x.x.x-bxxx
2013-03-06 22:20:11 +01:00

71 lines
2.1 KiB
Java

package com.gmail.nossr50.util;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
public class UpdateChecker {
private UpdateChecker() {}
public static boolean updateAvailable() throws Exception {
String checkType = "release";
if (Config.getInstance().getPreferBeta()) {
checkType = "latest";
}
String version = mcMMO.p.getDescription().getVersion();
URL url = new URL("http://api.bukget.org/api2/bukkit/plugin/mcmmo/" + checkType);
InputStreamReader isr;
try {
isr = new InputStreamReader(url.openStream());
}
catch (UnknownHostException e) {
return false;
}
String newVersion;
try {
JSONParser jp = new JSONParser();
Object o = jp.parse(isr);
if (!(o instanceof JSONObject)) {
isr.close();
return false;
}
JSONObject jo = (JSONObject) o;
jo = (JSONObject) jo.get("versions");
newVersion = (String) jo.get("version");
String[] oldTokens = version.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");
String[] newTokens = newVersion.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");
for (int i = 0; i < 4; i++) {
Integer newVer = Integer.parseInt(newTokens[i]);
Integer oldVer;
try {
oldVer = Integer.parseInt(oldTokens[i]);
}
catch (NumberFormatException e) {
oldVer = 0;
}
if (oldVer < newVer) {
isr.close();
return true;
}
}
return false;
}
catch (ParseException e) {
isr.close();
return false;
}
}
}