diff --git a/forge-gui-android/src/forge/app/AtomReader.java b/forge-gui-android/src/forge/app/AtomReader.java index 1ac470e5939..b48e6762f6d 100644 --- a/forge-gui-android/src/forge/app/AtomReader.java +++ b/forge-gui-android/src/forge/app/AtomReader.java @@ -61,10 +61,12 @@ public class AtomReader { public static class Entry { public final String title; public final String updated; + public final String link; - private Entry(String title, String updated) { + private Entry(String title, String updated, String link) { this.title = title; this.updated = updated; + this.link = link; } } @@ -72,6 +74,7 @@ public class AtomReader { parser.require(XmlPullParser.START_TAG, ns, "entry"); String title = null; String updated = null; + String link = null; while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) { continue; @@ -81,11 +84,13 @@ public class AtomReader { title = readTitle(parser); } else if (name.equals("updated")) { updated = readUpdated(parser); + } else if (name.equals("link")) { + link = readLink(parser); } else { skip(parser); } } - return new Entry(title, updated); + return new Entry(title, updated, link); } private String readTitle(XmlPullParser parser) throws Exception { @@ -102,6 +107,21 @@ public class AtomReader { return updated; } + private String readLink(XmlPullParser parser) throws Exception { + String link = ""; + parser.require(XmlPullParser.START_TAG, ns, "link"); + String tag = parser.getName(); + String relType = parser.getAttributeValue(null, "rel"); + if (tag.equals("link")) { + if (relType.equals("alternate")) { + link = parser.getAttributeValue(null, "href"); + parser.nextTag(); + } + } + parser.require(XmlPullParser.END_TAG, ns, "link"); + return link; + } + private String readText(XmlPullParser parser) throws Exception { String result = ""; if (parser.next() == XmlPullParser.TEXT) { diff --git a/forge-gui-android/src/forge/app/GitLogs.java b/forge-gui-android/src/forge/app/GitLogs.java index e1bef125bf1..48221fe2af4 100644 --- a/forge-gui-android/src/forge/app/GitLogs.java +++ b/forge-gui-android/src/forge/app/GitLogs.java @@ -46,4 +46,28 @@ public class GitLogs { } return message; } + + public String getLatestReleaseTag() { + String tag = ""; + try { + URL url = new URL("https://github.com/Card-Forge/forge/releases.atom"); + InputStream inputStream = url.openStream(); + List entries = new AtomReader().parse(inputStream); + for (AtomReader.Entry entry : entries) { + if (entry.link != null) { + try { + String val = entry.link; + tag = val.substring(val.lastIndexOf("forge")); + break; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return tag; + } } diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index bc53546b8a6..4328dc4cfa2 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -641,8 +641,7 @@ public class Main extends ForgeAndroidApplication { @Override public String getReleaseTag() { - //android doesn't have release yet on github... - return ""; + return new GitLogs().getLatestReleaseTag(); } @Override