This repository has been archived on 2025-03-19. You can view files and clone it, but cannot push or open issues or pull requests.

74 lines
2.6 KiB
Java

package de.gnmyt.mcdash.api.installer;
import com.google.gson.Gson;
import de.gnmyt.mcdash.api.Logger;
import de.gnmyt.mcdash.api.ServerVersionManager;
import okhttp3.OkHttpClient;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
public class PaperInstaller implements VersionInstaller {
private static final String PAPER_URL = "https://papermc.io/api/v2/projects/paper/versions/%s/builds/%s/downloads/paper-%s-%s.jar";
private static final String PAPER_API = "https://papermc.io/api/v2/projects/paper/versions/%s";
private final OkHttpClient client = new OkHttpClient();
private final Logger LOG = new Logger(PaperInstaller.class);
public String getPaperVersion(String version) {
try {
okhttp3.Request request = new okhttp3.Request.Builder().url(String.format(PAPER_API, version)).build();
okhttp3.Response response = client.newCall(request).execute();
if (response.code() == 200) {
HashMap json = new Gson().fromJson(response.body().string(), HashMap.class);
ArrayList builds = (ArrayList) json.get("builds");
return builds.get(0).toString().split("\\.")[0];
}
response.close();
} catch (Exception e) {
LOG.error("An error occurred while getting the paper version", e);
}
return null;
}
@Override
public boolean isValidVersion(String software, String version) {
try {
okhttp3.Request request = new okhttp3.Request.Builder().url(String.format(PAPER_API, version)).build();
okhttp3.Response response = client.newCall(request).execute();
boolean isValid = response.code() == 200;
response.close();
return isValid;
} catch (Exception e) {
LOG.error("An error occurred while checking the paper version", e);
return false;
}
}
@Override
public boolean installVersion(String software, String version) {
try {
String paperVersion = getPaperVersion(version);
if (paperVersion == null) {
LOG.error("An error occurred while getting the paper version");
return false;
}
String downloadUrl = String.format(PAPER_URL, version, paperVersion, version, paperVersion);
return downloadFile(downloadUrl, new File(ServerVersionManager.getVersionFolder(), software + "-" + version + ".jar"));
} catch (Exception e) {
LOG.error("An error occurred while installing the paper version", e);
return false;
}
}
}