mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
add mobile updater, update gdx natives
This commit is contained in:
113
forge-gui-android/src/forge/app/AtomReader.java
Normal file
113
forge-gui-android/src/forge/app/AtomReader.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package forge.app;
|
||||
|
||||
import android.util.Xml;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AtomReader {
|
||||
private static final String ns = null;
|
||||
|
||||
public List<Entry> parse(InputStream in) throws Exception {
|
||||
try {
|
||||
XmlPullParser parser = Xml.newPullParser();
|
||||
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
|
||||
parser.setInput(in, "UTF-8");
|
||||
parser.nextTag();
|
||||
return readFeed(parser);
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
}
|
||||
|
||||
private List<Entry> readFeed(XmlPullParser parser) throws Exception {
|
||||
List<Entry> entries = new ArrayList<>();
|
||||
|
||||
parser.require(XmlPullParser.START_TAG, ns, "feed");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
// Starts by looking for the entry tag.
|
||||
if (name.equals("entry")) {
|
||||
entries.add(readEntry(parser));
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
|
||||
private void skip(XmlPullParser parser) throws Exception {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
int depth = 1;
|
||||
while (depth != 0) {
|
||||
switch (parser.next()) {
|
||||
case XmlPullParser.END_TAG:
|
||||
depth--;
|
||||
break;
|
||||
case XmlPullParser.START_TAG:
|
||||
depth++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class Entry {
|
||||
public final String title;
|
||||
public final String updated;
|
||||
|
||||
private Entry(String title, String updated) {
|
||||
this.title = title;
|
||||
this.updated = updated;
|
||||
}
|
||||
}
|
||||
|
||||
private Entry readEntry(XmlPullParser parser) throws Exception {
|
||||
parser.require(XmlPullParser.START_TAG, ns, "entry");
|
||||
String title = null;
|
||||
String updated = null;
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
if (name.equals("title")) {
|
||||
title = readTitle(parser);
|
||||
} else if (name.equals("updated")) {
|
||||
updated = readUpdated(parser);
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
}
|
||||
return new Entry(title, updated);
|
||||
}
|
||||
|
||||
private String readTitle(XmlPullParser parser) throws Exception {
|
||||
parser.require(XmlPullParser.START_TAG, ns, "title");
|
||||
String title = readText(parser);
|
||||
parser.require(XmlPullParser.END_TAG, ns, "title");
|
||||
return title;
|
||||
}
|
||||
|
||||
private String readUpdated(XmlPullParser parser) throws Exception {
|
||||
parser.require(XmlPullParser.START_TAG, ns, "updated");
|
||||
String updated = readText(parser);
|
||||
parser.require(XmlPullParser.END_TAG, ns, "updated");
|
||||
return updated;
|
||||
}
|
||||
|
||||
private String readText(XmlPullParser parser) throws Exception {
|
||||
String result = "";
|
||||
if (parser.next() == XmlPullParser.TEXT) {
|
||||
result = parser.getText();
|
||||
parser.nextTag();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
49
forge-gui-android/src/forge/app/GitLogs.java
Normal file
49
forge-gui-android/src/forge/app/GitLogs.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package forge.app;
|
||||
|
||||
import forge.util.TextUtil;
|
||||
import org.apache.commons.text.StringEscapeUtils;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class GitLogs {
|
||||
public String getLatest(Date buildDateOriginal, Date maxDate) {
|
||||
String message = "";
|
||||
try {
|
||||
URL url = new URL("https://github.com/Card-Forge/forge/commits/master.atom");
|
||||
InputStream inputStream = url.openStream();
|
||||
List<AtomReader.Entry> entries = new AtomReader().parse(inputStream);
|
||||
StringBuilder logs = new StringBuilder();
|
||||
SimpleDateFormat simpleDate = TextUtil.getSimpleDate();
|
||||
SimpleDateFormat atomDate = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
|
||||
int c = 0;
|
||||
for (AtomReader.Entry entry : entries) {
|
||||
if (entry.title == null)
|
||||
continue;
|
||||
String title = TextUtil.stripNonValidXMLCharacters(entry.title);
|
||||
if (title.contains("Merge"))
|
||||
continue;
|
||||
if (entry.updated == null)
|
||||
continue;
|
||||
Date feedDate = atomDate.parse(entry.updated);
|
||||
if (buildDateOriginal != null && feedDate.before(buildDateOriginal))
|
||||
continue;
|
||||
if (maxDate != null && feedDate.after(maxDate))
|
||||
continue;
|
||||
logs.append(simpleDate.format(feedDate)).append(" | ").append(StringEscapeUtils.unescapeXml(title).replace("\n", "").replace(" ", "")).append("\n\n");
|
||||
if (c >= 15)
|
||||
break;
|
||||
c++;
|
||||
}
|
||||
if (logs.length() > 0)
|
||||
message += ("\n\nLatest Changes:\n\n" + logs);
|
||||
inputStream.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -71,6 +71,7 @@ import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.text.Normalizer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
public class Main extends ForgeAndroidApplication {
|
||||
private AndroidAdapter Gadapter;
|
||||
@@ -633,6 +634,11 @@ public class Main extends ForgeAndroidApplication {
|
||||
return versionString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLatestChanges(Date buildDateOriginal, Date maxDate) {
|
||||
return new GitLogs().getLatest(buildDateOriginal, maxDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean openFile(String filename) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user