From 324e6e9a3704d9b10e2decbbef32ced45fbb2d0b Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Wed, 14 Feb 2024 00:49:17 +0100 Subject: [PATCH] Created the PaperInstaller.java --- .../mcdash/api/installer/PaperInstaller.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/de/gnmyt/mcdash/api/installer/PaperInstaller.java diff --git a/src/main/java/de/gnmyt/mcdash/api/installer/PaperInstaller.java b/src/main/java/de/gnmyt/mcdash/api/installer/PaperInstaller.java new file mode 100644 index 0000000..35f98ef --- /dev/null +++ b/src/main/java/de/gnmyt/mcdash/api/installer/PaperInstaller.java @@ -0,0 +1,57 @@ +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 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; + } + } +}