diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml
index 83623fb..bdb8441 100644
--- a/.github/workflows/work-jar.yml
+++ b/.github/workflows/work-jar.yml
@@ -92,4 +92,4 @@ jobs:
git tag -a "${{ steps.extract_version.outputs.version }}" -m "Release version ${{ steps.extract_version.outputs.version }}"
git push origin "${{ steps.extract_version.outputs.version }}"
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d031183..9f48f22 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index e8e5db5..b009377 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,8 +5,10 @@ plugins {
id("maven-publish") // Plugin pour la publication
}
+
group = "fr.sandro642.github"
-version = "0.1.2"
+version = "0.1.3.17.1-SNAPSHOT" // Version de votre projet
+
// Ajoutez cette tâche à votre build.gradle.kts
tasks.register("printVersion") {
@@ -17,6 +19,9 @@ tasks.register("printVersion") {
repositories {
mavenCentral()
+
+ maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
+ maven("https://oss.sonatype.org/content/repositories/snapshots/")
}
dependencies {
@@ -28,6 +33,8 @@ dependencies {
implementation("org.openjfx:javafx-controls:21")
implementation("org.openjfx:javafx-fxml:21")
+
+ compileOnly("org.spigotmc:spigot-api:1.8-R0.1-SNAPSHOT")
}
javafx {
diff --git a/readme.md b/readme.md
index 4550c4b..bb19f2c 100644
--- a/readme.md
+++ b/readme.md
@@ -21,6 +21,14 @@ Hook -----------------------|
```
---
+Changelog :
+
+```java
+ - [0.1.3.9-SNAPSHOT] : Ajout de la sérialisation des données pour une compatibilisation parfaite des données avec les HOOK.
+```
+
+---
+
## 🌟 Pourquoi ConnectorAPI ?
Imaginez une API qui ne se contente pas de relier des services, mais qui devient le chef d’orchestre de vos intégrations. ConnectorAPI est conçu pour :
diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java
index fc59de8..fc3fc48 100644
--- a/src/main/java/fr/sandro642/github/ConnectorAPI.java
+++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java
@@ -1,9 +1,8 @@
package fr.sandro642.github;
+import fr.sandro642.github.hook.MCSupport;
import fr.sandro642.github.jobs.JobGetInfos;
-import fr.sandro642.github.jobs.misc.MethodType;
import fr.sandro642.github.jobs.misc.ResourceType;
-import fr.sandro642.github.jobs.misc.VersionType;
import fr.sandro642.github.utils.Logger;
import fr.sandro642.github.utils.StoreAndRetrieve;
import fr.sandro642.github.utils.YamlUtils;
@@ -37,7 +36,11 @@ public static void initialize(ResourceType resourceType) {
// Génère le template si nécessaire
yamlUtils.generateTemplateIfNotExists(resourceType);
- storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath());
+ if (resourceType == ResourceType.MC_RESOURCES) {
+ storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, MCSupport().getPluginPath());
+ } else {
+ storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath());
+ }
// Charge l'URL depuis le fichier YAML
String baseUrl = yamlUtils.getURL();
@@ -82,4 +85,12 @@ public static YamlUtils YamlUtils() {
}
return yamlUtils;
}
+
+ /**
+ * Retourne une instance de MCSupport si le projet est un projet Minecraft
+ * @return MCSupport ou null si ce n'est pas un projet Minecraft
+ */
+ public static MCSupport MCSupport() {
+ return MCSupport.getInstance();
+ }
}
diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java
index 5547421..0bef9dc 100644
--- a/src/main/java/fr/sandro642/github/api/ApiClient.java
+++ b/src/main/java/fr/sandro642/github/api/ApiClient.java
@@ -1,7 +1,6 @@
package fr.sandro642.github.api;
import fr.sandro642.github.ConnectorAPI;
-import fr.sandro642.github.jobs.misc.ResourceType;
import fr.sandro642.github.utils.Logger;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.web.reactive.function.client.WebClient;
@@ -29,12 +28,12 @@ public class ApiClient {
/**
* Constructeur de ApiClient qui initialise WebClient avec l'URL de base.
- * @param resourceType Type de ressource (peut être utilisé pour des configurations spécifiques).
*/
- public ApiClient(ResourceType resourceType) {
+ public ApiClient() {
String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY);
+
if (baseUrl == null) {
- throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI.");
+ throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. ");
}
this.webClient = WebClient.builder()
diff --git a/src/main/java/fr/sandro642/github/api/ApiResponse.java b/src/main/java/fr/sandro642/github/api/ApiResponse.java
index 9141f05..a04642a 100644
--- a/src/main/java/fr/sandro642/github/api/ApiResponse.java
+++ b/src/main/java/fr/sandro642/github/api/ApiResponse.java
@@ -250,7 +250,6 @@ public String display() {
", msg='" + msg + '\'' +
", code=" + code +
", data=" + data +
- ", extra=" + extra +
'}';
}
}
\ No newline at end of file
diff --git a/src/main/java/fr/sandro642/github/example/ExampleUsage.java b/src/main/java/fr/sandro642/github/example/ExampleUsage.java
index 66716fa..fa52f58 100644
--- a/src/main/java/fr/sandro642/github/example/ExampleUsage.java
+++ b/src/main/java/fr/sandro642/github/example/ExampleUsage.java
@@ -6,7 +6,9 @@
import fr.sandro642.github.jobs.misc.ResourceType;
import fr.sandro642.github.jobs.misc.VersionType;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -132,7 +134,7 @@ public static void main(String[] args) {
complexBody.put("nestedObject", subObject);
// Array
- java.util.List arrayValue = java.util.Arrays.asList("item1", "item2", "item3");
+ List arrayValue = Arrays.asList("item1", "item2", "item3");
complexBody.put("arrayValue", arrayValue);
ApiResponse complexResponse = ConnectorAPI.JobGetInfos()
diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java
new file mode 100644
index 0000000..45c8850
--- /dev/null
+++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java
@@ -0,0 +1,122 @@
+package fr.sandro642.github.hook;
+
+import org.bukkit.plugin.Plugin;
+
+/**
+ * MCSupport est une classe utilitaire pour gérer les hooks liés à Minecraft.
+ * Elle permet de vérifier si le projet est un projet Minecraft et de gérer les ressources associées.
+ * @author Sandro642
+ * @version 1.0
+ */
+public class MCSupport {
+
+ /**
+ * Création de l'instance unique de MCSupport.
+ */
+ private static MCSupport instance;
+
+ /**
+ * Instance unique du plugin Minecraft.
+ * Utilisée pour stocker la variable du plugin Minecraft.
+ */
+ private Plugin pluginSingleton;
+
+ /**
+ * Constructeur privé pour empêcher l'instanciation directe.
+ */
+ private MCSupport() {
+ // Constructeur privé pour le pattern Singleton
+ }
+
+ /**
+ * Méthode permettant de vérifier si le projet est un projet Minecraft.
+ * Elle vérifie si le chemin du fichier de configuration contient le chemin des ressources Minecraft.
+ *
+ * @return true si c'est un projet Minecraft, false sinon.
+ */
+ public boolean isMCProject() {
+ try {
+
+ String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY);
+ return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath());
+ } catch (Exception e) {
+ // En cas d'erreur, considérer que ce n'est pas un projet MC
+ return false;
+ }
+ }
+
+ /**
+ * Méthode permettant de définir la variable du plugin Minecraft.
+ * Elle doit être appelée dans un projet Minecraft pour initialiser le plugin.
+ *
+ * @param plugin Le plugin Minecraft à définir.
+ * @return L'instance du plugin définie.
+ * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft.
+ * @throws IllegalArgumentException Si le plugin fourni est null.
+ */
+ public Plugin setPluginVariable(Plugin plugin) {
+ if (plugin == null) {
+ throw new IllegalArgumentException("Plugin cannot be null.");
+ }
+ this.pluginSingleton = plugin;
+ return this.pluginSingleton;
+ }
+
+ /**
+ * Méthode permettant d'obtenir le chemin du path du plugin Minecraft.
+ * Elle doit être appelée dans un projet Minecraft pour récupérer le chemin du dossier de données du plugin.
+ *
+ * @return Le chemin du dossier de données du plugin.
+ * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft ou si le plugin n'est pas initialisé.
+ */
+ public String getPluginPath() {
+
+ if (pluginSingleton == null) {
+ throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first.");
+ }
+
+ return pluginSingleton.getDataFolder().getAbsolutePath();
+ }
+
+ /**
+ * Méthode permettant de vérifier si le plugin est initialisé.
+ *
+ * @return true si le plugin est initialisé, false sinon.
+ */
+ public boolean isPluginInitialized() {
+ return pluginSingleton != null;
+ }
+
+ /**
+ * Méthode permettant d'obtenir l'instance du plugin (si initialisé).
+ *
+ * @return L'instance du plugin ou null si non initialisé.
+ */
+ public Plugin getPlugin() {
+ return pluginSingleton;
+ }
+
+ /**
+ * Méthode permettant de réinitialiser l'instance du plugin.
+ * Utile pour les tests ou le rechargement.
+ */
+ public void resetPlugin() {
+ this.pluginSingleton = null;
+ }
+
+ /**
+ * Méthode permettant d'obtenir l'instance unique de MCSupport.
+ *
+ * @return L'instance unique de MCSupport.
+ */
+ public static MCSupport getInstance() {
+ if (instance == null) {
+ synchronized (MCSupport.class) {
+ if (instance == null) {
+ instance = new MCSupport();
+ }
+ }
+ }
+ return instance;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java
index f9d430c..181fd2e 100644
--- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java
+++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java
@@ -4,7 +4,6 @@
import fr.sandro642.github.api.ApiClient;
import fr.sandro642.github.api.ApiResponse;
import fr.sandro642.github.jobs.misc.MethodType;
-import fr.sandro642.github.jobs.misc.ResourceType;
import fr.sandro642.github.jobs.misc.VersionType;
import fr.sandro642.github.utils.YamlUtils;
@@ -25,15 +24,14 @@ public class JobGetInfos {
* ApiClient est utilisé pour effectuer les requêtes HTTP vers l'API.
* YamlUtils est utilisé pour lire les routes depuis le fichier YAML.
*/
- private ApiClient apiClient;
- private YamlUtils yamlUtils;
+ private final ApiClient apiClient;
+ private final YamlUtils yamlUtils;
/**
* Constructeur de JobGetInfos qui initialise ApiClient et YamlUtils.
- * Utilise ResourceType.MAIN_RESOURCES pour le type de ressource par défaut.
*/
public JobGetInfos() {
- this.apiClient = new ApiClient(ResourceType.MAIN_RESOURCES);
+ this.apiClient = new ApiClient();
this.yamlUtils = ConnectorAPI.YamlUtils();
}
@@ -135,7 +133,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
String paramKey = "{" + entry.getKey() + "}";
String paramValue = entry.getValue().toString();
- // Remplace tous les occurrences du paramètre dans la route
+ // Remplace toutes les occurrences du paramètre dans la route
fullRoute = fullRoute.replace(paramKey, paramValue);
}
}
@@ -169,6 +167,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
*/
public ApiResponse getResponse() {
try {
+
String route = (String) ConnectorAPI.StoreAndRetrieve().store.get("currentRoute");
MethodType method = (MethodType) ConnectorAPI.StoreAndRetrieve().store.get("currentMethod");
Map body = (Map) ConnectorAPI.StoreAndRetrieve().store.get("currentBody");
diff --git a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java
index 40bc106..b7998de 100644
--- a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java
+++ b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java
@@ -14,7 +14,7 @@ public enum ResourceType {
*/
MAIN_RESOURCES("src/main/resources"),
TEST_RESOURCES("src/test/resources"),
- MC_RESOURCES("Arrive prochainement");
+ MC_RESOURCES("");
/**
diff --git a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java
index e8adbae..c182776 100644
--- a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java
+++ b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java
@@ -1,7 +1,6 @@
package fr.sandro642.github.utils;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.Map;
+import java.util.HashMap;
/**
* StoreAndRetrieve est une classe utilitaire pour stocker et récupérer des valeurs associées à des clés.
@@ -22,7 +21,7 @@ public class StoreAndRetrieve {
*/
public final String URL_KEY = "baseUrl";
public final String FILE_LOCATION_KEY = "fileLocation";
- public final Map store = new ConcurrentHashMap<>();
+ public final HashMap store = new HashMap<>();
/**
* Ajoute une valeur à la map avec la clé spécifiée.
diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java
index 00b85fd..750163f 100644
--- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java
+++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java
@@ -1,6 +1,7 @@
package fr.sandro642.github.utils;
import fr.sandro642.github.ConnectorAPI;
+import fr.sandro642.github.hook.MCSupport;
import fr.sandro642.github.jobs.misc.ResourceType;
import org.yaml.snakeyaml.Yaml;
@@ -26,6 +27,8 @@ public class YamlUtils {
* @return l'URL de base définie dans le fichier YAML, ou null si une erreur se produit
*/
public String getURL() {
+ //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
+
String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml";
try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) {
@@ -43,6 +46,8 @@ public String getURL() {
* @return
*/
public String getRoute(String routeName) {
+ //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
+
String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml";
try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) {
@@ -65,7 +70,14 @@ public String getRoute(String routeName) {
* @param type
*/
public void generateTemplateIfNotExists(ResourceType type) {
- String basePath = type.getPath();
+ String basePath;
+
+ if (type == ResourceType.MC_RESOURCES) {
+ basePath = MCSupport.getInstance().getPluginPath();
+ } else {
+ basePath = type.getPath();
+ }
+
File directory = new File(basePath);
if (!directory.exists()) {
directory.mkdirs();
diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java
index 70ad428..2f76a31 100644
--- a/src/test/java/fr/sandro642/github/test/Main.java
+++ b/src/test/java/fr/sandro642/github/test/Main.java
@@ -8,6 +8,8 @@
import fr.sandro642.github.jobs.misc.VersionType;
import org.junit.jupiter.api.Test;
+import java.util.HashMap;
+
/**
* Main est une classe de test pour vérifier la création du fichier YML et pleins d'autres fonctionnalités de la librairie.
* @author Sandro642
@@ -24,15 +26,7 @@ public void getUrl() {
System.out.println(ConnectorAPI.YamlUtils().getURL());
}
- @Test
- public void getRoute() {
- ConnectorAPI.initialize(ResourceType.TEST_RESOURCES);
-
- System.out.println(ConnectorAPI.JobGetInfos().getRoutes(VersionType.V1_BRANCH, MethodType.GET, "info"));
- }
-
public static void main(String[] args) {
- // Initialisation du ConnectorAPI
ConnectorAPI.initialize(ResourceType.TEST_RESOURCES);
try {
@@ -46,6 +40,8 @@ public static void main(String[] args) {
System.out.println("Code: " + response.getCode());
System.out.println("Erreur: " + response.isErr());
+ System.out.println(response.display());
+
// Exemple avec des données spécifiques (si elles existent)
try {
System.out.println("Valeur spécifique: " + response.getSpecData("version"));
@@ -59,15 +55,4 @@ public static void main(String[] args) {
}
}
- @Test
- public void testHorsData() {
- ConnectorAPI.initialize(ResourceType.TEST_RESOURCES);
-
- ApiResponse response = ConnectorAPI.JobGetInfos()
- .getRoutes(VersionType.V1_BRANCH, MethodType.GET, "example1")
- .getResponse();
-
- System.out.println(response.display());
- }
-
}
diff --git a/todo.md b/todo.md
new file mode 100644
index 0000000..caf4b54
--- /dev/null
+++ b/todo.md
@@ -0,0 +1,8 @@
+Carnet des charges :
+
+### Objectif
+Création de la classe SerialMap.java : ```Fait```
+
+Implémentation des méthodes de la classe SerialMap.java : ```A faire```.
+
+Sur la question de la branche ```feature/serializer```, pour l'instant juste commit et pousser sur la branche distante avant de l'intégrer dans le [work-jar.yml](.github/workflows/work-jar.yml) En prod. Essai en interne pour l'instant : ```Ajout de la branche en prod.```
\ No newline at end of file