From 086e6d11a6f434f52558da491b8ee1498bfeac60 Mon Sep 17 00:00:00 2001 From: hypherionmc Date: Thu, 27 Jun 2024 00:48:47 +0200 Subject: [PATCH] Update to match metadata and endpoints for Nightbloom --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../hypherionmc/nightbloom/NightBloom4J.java | 3 ++- .../nightbloom/client/HttpClient.java | 5 +++- .../client/requests/ProjectFilesRequest.java | 27 +++++++++++++++++++ .../client/requests/ProjectsEndpoint.java | 11 +++----- .../hypherionmc/nightbloom/model/Depends.java | 13 +++++++++ .../nightbloom/model/FileSummary.java | 3 +++ .../nightbloom/model/PaginatedFileResult.java | 14 ++++++++++ .../nightbloom/model/ProjectFile.java | 3 +++ .../nightbloom/model/ProjectMeta.java | 3 +++ 11 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectFilesRequest.java create mode 100644 src/main/java/com/hypherionmc/nightbloom/model/Depends.java create mode 100644 src/main/java/com/hypherionmc/nightbloom/model/PaginatedFileResult.java diff --git a/build.gradle b/build.gradle index dac0f75..cf0ccdb 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'com.hypherionmc.nightbloom' -version = '1.0.0' +version = '1.2.0' configurations { shadeMe diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5fb8578..3028a17 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sun Dec 10 23:57:41 SAST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/com/hypherionmc/nightbloom/NightBloom4J.java b/src/main/java/com/hypherionmc/nightbloom/NightBloom4J.java index bc2c7f9..b12ad4b 100644 --- a/src/main/java/com/hypherionmc/nightbloom/NightBloom4J.java +++ b/src/main/java/com/hypherionmc/nightbloom/NightBloom4J.java @@ -14,10 +14,11 @@ import org.jetbrains.annotations.NotNull; * @author HypherionSA * Main API Client Class */ +@Getter @RequiredArgsConstructor(access = AccessLevel.PRIVATE) public class NightBloom4J { - @NonNull @Getter + @NonNull private HttpClient client; /** diff --git a/src/main/java/com/hypherionmc/nightbloom/client/HttpClient.java b/src/main/java/com/hypherionmc/nightbloom/client/HttpClient.java index ce856b0..360d472 100644 --- a/src/main/java/com/hypherionmc/nightbloom/client/HttpClient.java +++ b/src/main/java/com/hypherionmc/nightbloom/client/HttpClient.java @@ -17,7 +17,7 @@ import java.io.IOException; public abstract class HttpClient { // Private variables, mostly for internal use - private final String API_BASE = "https://api.nightbloom.cc"; + private final String API_BASE = "http://127.0.0.1:8787"; private final String baseUrl; private final UserAgent agent; @@ -112,6 +112,9 @@ public abstract class HttpClient { bodyObject.addProperty("loader", String.join("|", data.getModloaders())); bodyObject.addProperty("minecraft", String.join("|", data.getMinecraftVersions())); bodyObject.addProperty("changelog", data.getChangelog()); + bodyObject.addProperty("type", data.getType()); + bodyObject.addProperty("dependsOn", data.getDependsOn()); + bodyObject.addProperty("displayName", data.getDisplayName()); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) diff --git a/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectFilesRequest.java b/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectFilesRequest.java new file mode 100644 index 0000000..ab20eaf --- /dev/null +++ b/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectFilesRequest.java @@ -0,0 +1,27 @@ +package com.hypherionmc.nightbloom.client.requests; + +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +@Setter +@RequiredArgsConstructor(staticName = "create") +public class ProjectFilesRequest { + + private final String slug; + + @NotNull + private String minecraft = "all"; + @NotNull + private String loader = "all"; + @NotNull + private String type = "all"; + private int page = 1; + private int pageSize = 10; + + public String buildRequest() { + String base = "projects/%s/files?mcVer=%s&loader=%s&type=%s&page=%s&pageSize=%s"; + return String.format(base, slug, minecraft, loader, type, page, pageSize); + } + +} diff --git a/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectsEndpoint.java b/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectsEndpoint.java index c15ad21..5dae8d9 100644 --- a/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectsEndpoint.java +++ b/src/main/java/com/hypherionmc/nightbloom/client/requests/ProjectsEndpoint.java @@ -2,10 +2,7 @@ package com.hypherionmc.nightbloom.client.requests; import com.hypherionmc.nightbloom.NightBloom4J; import com.hypherionmc.nightbloom.client.HttpClient; -import com.hypherionmc.nightbloom.model.ProjectFile; -import com.hypherionmc.nightbloom.model.ProjectMeta; -import com.hypherionmc.nightbloom.model.ProjectResponse; -import com.hypherionmc.nightbloom.model.StandardResponse; +import com.hypherionmc.nightbloom.model.*; import lombok.RequiredArgsConstructor; import java.io.File; @@ -46,13 +43,13 @@ public class ProjectsEndpoint { /** * Get all files for a single project - * @param slug The project slug. For example 'craterlib' + * @param request An instance of {@link ProjectFilesRequest} * @return A list of files uploaded to the project * @throws IOException Thrown when an API error occurs */ - public List getFiles(String slug) throws IOException { + public PaginatedFileResult getFiles(ProjectFilesRequest request) throws IOException { HttpClient client = bloom4J.getClient(); - return Arrays.stream(client.get("projects/" + slug + "/files", ProjectFile[].class)).collect(Collectors.toList()); + return client.get(request.buildRequest(), PaginatedFileResult.class); } /** diff --git a/src/main/java/com/hypherionmc/nightbloom/model/Depends.java b/src/main/java/com/hypherionmc/nightbloom/model/Depends.java new file mode 100644 index 0000000..016eda2 --- /dev/null +++ b/src/main/java/com/hypherionmc/nightbloom/model/Depends.java @@ -0,0 +1,13 @@ +package com.hypherionmc.nightbloom.model; + +import lombok.Getter; + +@Getter +public class Depends { + + private String slug; + private String title; + private String logo; + private String author; + +} diff --git a/src/main/java/com/hypherionmc/nightbloom/model/FileSummary.java b/src/main/java/com/hypherionmc/nightbloom/model/FileSummary.java index db9f017..1ccb3ac 100644 --- a/src/main/java/com/hypherionmc/nightbloom/model/FileSummary.java +++ b/src/main/java/com/hypherionmc/nightbloom/model/FileSummary.java @@ -18,7 +18,10 @@ public class FileSummary { private String version; private int filesize; private String filename; + private String type; + private Depends dependsOn; private String downloadUrl; + private String displayName; private Date createdAt; private Date updatedAt; diff --git a/src/main/java/com/hypherionmc/nightbloom/model/PaginatedFileResult.java b/src/main/java/com/hypherionmc/nightbloom/model/PaginatedFileResult.java new file mode 100644 index 0000000..f19e4f8 --- /dev/null +++ b/src/main/java/com/hypherionmc/nightbloom/model/PaginatedFileResult.java @@ -0,0 +1,14 @@ +package com.hypherionmc.nightbloom.model; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class PaginatedFileResult { + private List files; + public int page; + public int totalPages; + public int totalCount; + public int pageSize; +} diff --git a/src/main/java/com/hypherionmc/nightbloom/model/ProjectFile.java b/src/main/java/com/hypherionmc/nightbloom/model/ProjectFile.java index 82e56ee..e8225e0 100644 --- a/src/main/java/com/hypherionmc/nightbloom/model/ProjectFile.java +++ b/src/main/java/com/hypherionmc/nightbloom/model/ProjectFile.java @@ -19,6 +19,9 @@ public class ProjectFile { private int filesize; private String filename; private String downloadUrl; + private String type; + private Depends dependsOn; + private String displayName; private Date createdAt; private Date updatedAt; } diff --git a/src/main/java/com/hypherionmc/nightbloom/model/ProjectMeta.java b/src/main/java/com/hypherionmc/nightbloom/model/ProjectMeta.java index fa3360e..e33011a 100644 --- a/src/main/java/com/hypherionmc/nightbloom/model/ProjectMeta.java +++ b/src/main/java/com/hypherionmc/nightbloom/model/ProjectMeta.java @@ -17,6 +17,9 @@ public class ProjectMeta { private final List modloaders = new ArrayList<>(); private final List minecraftVersions = new ArrayList<>(); private final String changelog; + private final String type; + private final int dependsOn; + private final String displayName; public void addModloader(String loader) { if (!modloaders.contains(loader))