Skip to content

Commit c1a19c1

Browse files
committed
add CanvasUpdater
1 parent a0a0ec3 commit c1a19c1

2 files changed

Lines changed: 45 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
@@ -51,6 +51,7 @@ public final class UpdateBuilder {
5151
registerUpdater(LeafUpdater::new, "leaf");
5252
registerUpdater(versionQuery -> new LeavesUpdater(versionQuery, "leaves"), "leaves", "leavesmc");
5353
registerUpdater(LuminolUpdater::new, "luminol", "luminolmc");
54+
registerUpdater(CanvasUpdater::new, "canvas", "canvasmc");
5455
}
5556

5657
private final String project;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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.Matcher;
8+
import java.util.regex.Pattern;
9+
10+
public class CanvasUpdater extends GithubReleaseUpdater {
11+
private static final Pattern VERSION_PATTERN = Pattern.compile("\\[\"version\"\\s*=\\s*MC([\\d.]+)]");
12+
13+
public CanvasUpdater(VersionQuery versionQuery) {
14+
super(versionQuery, "CraftCanvasMC/Canvas");
15+
}
16+
17+
@Override
18+
public Pattern getArtifactPattern() {
19+
return Pattern.compile(".*\\.jar");
20+
}
21+
22+
private static String getVersion(String body) {
23+
Matcher versionMatcher = VERSION_PATTERN.matcher(body);
24+
if (!versionMatcher.find()) {
25+
throw new IllegalStateException("Cannot find the version");
26+
}
27+
return versionMatcher.group(1);
28+
}
29+
30+
@Override
31+
public String getDefaultVersion() {
32+
JSONObject release = getLatestRelease();
33+
String body = release.getString("body");
34+
return getVersion(body);
35+
}
36+
37+
@Override
38+
public JSONObject getReleaseObject() {
39+
return getReleaseByPredicate(release -> {
40+
String body = release.getString("body");
41+
return getVersion(body).equals(version);
42+
});
43+
}
44+
}

0 commit comments

Comments
 (0)