From 3a62436ecd1b727d37323b025a6fa100fd189136 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Sat, 2 May 2020 11:20:51 +0200 Subject: [PATCH] Moved ModInfo outside Commands.java --- .../java/ley/anvil/modpacktools/Commands.java | 74 +--------------- .../ley/anvil/modpacktools/util/ModInfo.java | 86 +++++++++++++++++++ 2 files changed, 88 insertions(+), 72 deletions(-) create mode 100644 src/main/java/ley/anvil/modpacktools/util/ModInfo.java diff --git a/src/main/java/ley/anvil/modpacktools/Commands.java b/src/main/java/ley/anvil/modpacktools/Commands.java index f9575ac..b024a44 100644 --- a/src/main/java/ley/anvil/modpacktools/Commands.java +++ b/src/main/java/ley/anvil/modpacktools/Commands.java @@ -2,6 +2,7 @@ package ley.anvil.modpacktools; import com.google.gson.*; import com.google.gson.annotations.SerializedName; +import ley.anvil.modpacktools.util.ModInfo; import ley.anvil.modpacktools.util.Util; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; @@ -95,7 +96,7 @@ public class Commands { try(CSVPrinter printer = new CSVPrinter(new FileWriter(csvFile), CSVFormat.EXCEL.withDelimiter(';'))) { printer.printRecord("Name", "Authors", "Link", "Downloads", "ID"); printer.println(); - ArrayList modlist = getModInfo(); + ArrayList modlist = ModInfo.getModInfo(); Collections.sort(modlist, Comparator.comparing(ModInfo :: getName)); for(ModInfo mod : modlist) { String name = mod.getName(); @@ -122,78 +123,7 @@ public class Commands { System.out.println("Expected Either HTML or CSV as format"); } } - private class ModInfo { - private String name; - private JsonArray authors; - @SerializedName("websiteUrl") - private String link; - @SerializedName("downloadCount") - private int downloads; - private int id; - private ModInfo(String name, JsonArray authors, String link, int downloads, int id) { - this.name = name; - this.authors = authors; - this.link = link; - this.downloads = downloads; - this.id = id; - } - - public String getName() { - return name; - } - - public String[] getAuthors() { - ArrayList authorArr = new ArrayList<>(); - for(JsonElement author : authors) { - JsonObject authorObj = (JsonObject) author; - authorArr.add(authorObj.get("name").getAsString()); - } - return authorArr.toArray(new String[authorArr.size()]); - } - - public String getLink() { - return link; - } - - public int getDownloads() { - return downloads; - } - - public int getId() { - return id; - } - } - - private static ArrayList getModInfo() { - try { - System.out.println("Getting Info From Curse API"); - File manifestFile = new File(Main.CONFIG.JAR_LOCATION, Main.CONFIG.CONFIG.get("manifestFile").getAsString()); - //Read manifest - JsonObject manifest = Util.readJsonFile(manifestFile); - JsonArray files = manifest.getAsJsonArray("files"); - - ArrayList fileIds = new ArrayList<>(); - for(JsonElement file : files) { - fileIds.add(((JsonObject) file).get("projectID").getAsInt()); - } - String responseStr = Util.httpPostString(new URL("https://addons-ecs.forgesvc.net/api/v2/addon"), - fileIds.toString(), - "application/json; utf-8", - "application/json"); - JsonArray response = (JsonArray) JsonParser.parseString(responseStr); - - ArrayList modInfos = new ArrayList<>(); - Gson gson = new Gson(); - for(JsonElement mod : response) { - modInfos.add(gson.fromJson(mod, ModInfo.class)); - } - return modInfos; - } catch(MalformedURLException e) { - e.printStackTrace(); - } - return null; - } //Commands for users (available outside a modpack dev environment) diff --git a/src/main/java/ley/anvil/modpacktools/util/ModInfo.java b/src/main/java/ley/anvil/modpacktools/util/ModInfo.java new file mode 100644 index 0000000..654a9a4 --- /dev/null +++ b/src/main/java/ley/anvil/modpacktools/util/ModInfo.java @@ -0,0 +1,86 @@ +package ley.anvil.modpacktools.util; + +import com.google.gson.*; +import com.google.gson.annotations.SerializedName; +import ley.anvil.modpacktools.Commands; +import ley.anvil.modpacktools.Main; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; + +public class ModInfo { + + private String name; + private JsonArray authors; + @SerializedName("websiteUrl") + private String link; + @SerializedName("downloadCount") + private int downloads; + private int id; + + private ModInfo(String name, JsonArray authors, String link, int downloads, int id) { + this.name = name; + this.authors = authors; + this.link = link; + this.downloads = downloads; + this.id = id; + } + + public String getName() { + return name; + } + + public String[] getAuthors() { + ArrayList authorArr = new ArrayList<>(); + for(JsonElement author : authors) { + JsonObject authorObj = (JsonObject) author; + authorArr.add(authorObj.get("name").getAsString()); + } + return authorArr.toArray(new String[authorArr.size()]); + } + + public String getLink() { + return link; + } + + public int getDownloads() { + return downloads; + } + + public int getId() { + return id; + } + + public static ArrayList getModInfo() { + try { + System.out.println("Getting Info From Curse API"); + File manifestFile = new File(Main.CONFIG.JAR_LOCATION, Main.CONFIG.CONFIG.get("manifestFile").getAsString()); + //Read manifest + JsonObject manifest = Util.readJsonFile(manifestFile); + JsonArray files = manifest.getAsJsonArray("files"); + + ArrayList fileIds = new ArrayList<>(); + for(JsonElement file : files) { + fileIds.add(((JsonObject) file).get("projectID").getAsInt()); + } + String responseStr = Util.httpPostString(new URL("https://addons-ecs.forgesvc.net/api/v2/addon"), + fileIds.toString(), + "application/json; utf-8", + "application/json"); + JsonArray response = (JsonArray) JsonParser.parseString(responseStr); + + ArrayList modInfos = new ArrayList<>(); + Gson gson = new Gson(); + for(JsonElement mod : response) { + modInfos.add(gson.fromJson(mod, ModInfo.class)); + } + return modInfos; + } catch(MalformedURLException e) { + e.printStackTrace(); + } + return null; + } + +}