Skip to content

Commit 67d3d4c

Browse files
committed
add Luminol updater
1 parent 603e3d2 commit 67d3d4c

3 files changed

Lines changed: 58 additions & 0 deletions

File tree

lib/src/main/java/me/hsgamer/mcserverupdater/UpdateBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public final class UpdateBuilder {
4848
registerUpdater(DivineUpdater::new, "divine", "divinemc");
4949
registerUpdater(LeafUpdater::new, "leaf");
5050
registerUpdater(versionQuery -> new LeavesUpdater(versionQuery, "leaves"), "leaves", "leavesmc");
51+
registerUpdater(LuminolUpdater::new, "luminol", "luminolmc");
5152
}
5253

5354
private final String project;

lib/src/main/java/me/hsgamer/mcserverupdater/api/GithubReleaseUpdater.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.io.InputStream;
1515
import java.net.URLConnection;
1616
import java.util.Objects;
17+
import java.util.function.Predicate;
1718
import java.util.regex.Pattern;
1819

1920
public abstract class GithubReleaseUpdater implements SimpleChecksum, UrlInputStreamUpdater {
@@ -65,6 +66,34 @@ protected JSONObject getReleaseByTag(String tag) {
6566
}
6667
}
6768

69+
protected JSONObject getReleaseByTagMatch(Predicate<String> tagPredicate) {
70+
String url = releasesUrl;
71+
int page = 1;
72+
while (true) {
73+
String pageUrl = url + "?per_page=100&page=" + page;
74+
debug("Getting release from " + pageUrl);
75+
try {
76+
URLConnection connection = UserAgent.CHROME.assignToConnection(WebUtils.createConnection(pageUrl));
77+
InputStream inputStream = connection.getInputStream();
78+
JSONArray array = new JSONArray(new JSONTokener(inputStream));
79+
for (int i = 0; i < array.length(); i++) {
80+
JSONObject object = array.getJSONObject(i);
81+
String tag = object.getString("tag_name");
82+
if (tagPredicate.test(tag)) {
83+
return object;
84+
}
85+
}
86+
if (array.length() < 100) {
87+
break;
88+
}
89+
page++;
90+
} catch (IOException e) {
91+
throw new RuntimeException(e);
92+
}
93+
}
94+
throw new RuntimeException("Cannot find the release");
95+
}
96+
6897
private String getBuild() {
6998
JSONObject object = getReleaseObject();
7099
if (object == null) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package me.hsgamer.mcserverupdater.updater;
2+
3+
import me.hsgamer.mcserverupdater.api.GithubReleaseUpdater;
4+
import me.hsgamer.mcserverupdater.util.VersionQuery;
5+
import org.json.JSONObject;
6+
7+
import java.util.regex.Pattern;
8+
9+
public class LuminolUpdater extends GithubReleaseUpdater {
10+
public LuminolUpdater(VersionQuery versionQuery) {
11+
super(versionQuery, "LuminolMC/Luminol");
12+
}
13+
14+
@Override
15+
public Pattern getArtifactPattern() {
16+
return Pattern.compile("luminol-.+-paperclip\\.jar");
17+
}
18+
19+
@Override
20+
public String getDefaultVersion() {
21+
return "1.21.1";
22+
}
23+
24+
@Override
25+
public JSONObject getReleaseObject() {
26+
return getReleaseByTagMatch(tag -> tag.startsWith(version));
27+
}
28+
}

0 commit comments

Comments
 (0)