From 457aad54f927c4993d147a86e637b90a3a209c3d Mon Sep 17 00:00:00 2001 From: gomeow Date: Sun, 5 May 2013 21:23:24 -0700 Subject: [PATCH] New way of update checking --- .../com/drtshock/playervaults/Listeners.java | 4 +- .../drtshock/playervaults/PlayerVaults.java | 8 +-- .../drtshock/playervaults/util/Updater.java | 70 ++++++++----------- 3 files changed, 37 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/drtshock/playervaults/Listeners.java b/src/main/java/com/drtshock/playervaults/Listeners.java index ee093a3..eacad90 100644 --- a/src/main/java/com/drtshock/playervaults/Listeners.java +++ b/src/main/java/com/drtshock/playervaults/Listeners.java @@ -75,8 +75,8 @@ public class Listeners implements Listener { Player player = event.getPlayer(); vm.playerVaultFile(player.getName()); if(player.isOp() && PlayerVaults.UPDATE) { - player.sendMessage(ChatColor.GREEN + "Version " + PlayerVaults.NAME + " of PlayerVaults is up for download!"); - player.sendMessage(ChatColor.GREEN + "http://dev.bukkit.org/server-mods/playervaults/ to view the changelog and download!"); + player.sendMessage(ChatColor.GREEN + "Version " + PlayerVaults.NEWVERSION + " of PlayerVaults is up for download!"); + player.sendMessage(ChatColor.GREEN + PlayerVaults.LINK + " to view the changelog and download!"); } } diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index d1c2cde..44244fd 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -23,7 +23,8 @@ public class PlayerVaults extends JavaPlugin { public static PlayerVaults PLUGIN; public Logger log; public static boolean UPDATE = false; - public static String NAME = ""; + public static String NEWVERSION = ""; + public static String LINK = ""; Commands commands; public static Economy ECON = null; public static boolean DROP_ON_DEATH = false; @@ -44,14 +45,13 @@ public class PlayerVaults extends JavaPlugin { loadConfig(); loadSigns(); startMetrics(); - Updater u = new Updater(getDescription().getVersion()); + Updater u = new Updater(); if(getConfig().getBoolean("check-update")) { try { if(u.getUpdate()) { UPDATE = true; - NAME = u.getNewVersion(); } - } catch(Exception e) { + } catch(IOException e) { log.log(Level.WARNING, "PlayerVaults: Failed to check for updates."); log.log(Level.WARNING, "PlayerVaults: Report this stack trace to drtshock and gomeow."); e.printStackTrace(); diff --git a/src/main/java/com/drtshock/playervaults/util/Updater.java b/src/main/java/com/drtshock/playervaults/util/Updater.java index d500e87..e177b25 100644 --- a/src/main/java/com/drtshock/playervaults/util/Updater.java +++ b/src/main/java/com/drtshock/playervaults/util/Updater.java @@ -10,16 +10,16 @@ import java.util.TreeMap; import java.util.logging.Level; import org.bukkit.configuration.file.YamlConfiguration; +import org.json.JSONException; +import org.json.JSONObject; import com.drtshock.playervaults.PlayerVaults; public class Updater extends PlayerVaults { SortedMap lang = new TreeMap(); - String version; - public Updater(String version) { - this.version = version; + public Updater() { YamlConfiguration langConf = super.getLang(); for(Lang item:Lang.values()) { if(langConf.getString(item.getPath()) == null) { @@ -35,45 +35,37 @@ public class Updater extends PlayerVaults { } } - String newVersion = ""; - - public String getNewVersion() { - return this.newVersion; - } - - public boolean getUpdate() throws Exception { - String version = this.version; - URL url = new URL("http://dev.bukkit.org/server-mods/playervaults/files.rss"); - InputStreamReader isr = null; + public boolean getUpdate() throws IOException { + JSONObject json; try { - isr = new InputStreamReader(url.openStream()); - } catch(UnknownHostException e) { - return false; - } - BufferedReader in = new BufferedReader(isr); - String line; - int lineNum = 0; - while ((line = in.readLine()) != null) { - if(line.length() != line.replace("", "").length()) { - line = line.replaceAll("<title>", "").replaceAll("", "").replaceAll(" ", "").substring(1); - if(lineNum == 1) { - this.newVersion = line; - Integer newVer = Integer.parseInt(line.replace(".", "")); - Integer oldVer = Integer.parseInt(version.replace(".", "")); - if(oldVer < newVer) { - return true; - } - else if(oldVer > newVer) { - return false; - } - else { - return false; - } - } - lineNum = lineNum + 1; + json = getInfo(); + String version = json.getString("dbo_version"); + String link = json.getString("link"); + PlayerVaults.LINK = link; + if(!version.equalsIgnoreCase(super.getDescription().getVersion())) { + return true; } + } catch(JSONException e) { + throw new IOException(); } - in.close(); return false; } + + public JSONObject getInfo() throws IOException { + URL url = new URL("http://api.bukget.org/3/plugins/bukkit/playervaults/latest"); + BufferedReader in = null; + try { + in = new BufferedReader(new InputStreamReader(url.openStream())); + } catch(UnknownHostException e) { + throw new IOException(); + } + JSONObject json; + try { + json = new JSONObject(in.readLine()).getJSONArray("versions").getJSONObject(0); + in.close(); + return json; + } catch(JSONException e) { + } + return null; + } } \ No newline at end of file