From e97089a81094c34f8350a67b0703fed7d140b1cf Mon Sep 17 00:00:00 2001
From: Vandewaeter Fabio <fabio.vandewaeter.etu@univ-lille.fr>
Date: Tue, 11 Mar 2025 08:53:49 +0100
Subject: [PATCH] save

---
 .../java/fil/sr2/flopbox/FTPResource.java     | 99 ++++++++++---------
 1 file changed, 50 insertions(+), 49 deletions(-)

diff --git a/src/main/java/fil/sr2/flopbox/FTPResource.java b/src/main/java/fil/sr2/flopbox/FTPResource.java
index a8a2f26..c922054 100644
--- a/src/main/java/fil/sr2/flopbox/FTPResource.java
+++ b/src/main/java/fil/sr2/flopbox/FTPResource.java
@@ -28,60 +28,62 @@ public class FTPResource {
     }
 
     @GET
-@Path("/{alias}/{path: .+}")
-public Response getFTPResource(
-        @PathParam("alias") String alias,
-        @PathParam("path") String path,
-        @HeaderParam("X-FTP-User") String user,
-        @HeaderParam("X-FTP-Pass") String pass) {
-
-    FTPServerConfig config = FTPServerRepository.getInstance().getServer(alias);
-    if (config == null) {
-        return Response.status(Response.Status.NOT_FOUND)
-                .entity("Serveur FTP non trouvé").build();
-    }
-
-    FTPClient ftpClient = new FTPClient();
-    try {
-        // Connexion et authentification FTP
-        ftpClient.connect(config.getHost(), config.getPort());
-        if (!ftpClient.login(user, pass)) {
-            return Response.status(Response.Status.UNAUTHORIZED)
-                    .entity("Authentification FTP échouée").build();
-        }
-        ftpClient.enterLocalPassiveMode();
-        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+    @Path("/{alias}/{path: .+}")
+    public Response getFTPResource(
+            @PathParam("alias") String alias,
+            @PathParam("path") String path,
+            @HeaderParam("X-FTP-User") String user,
+            @HeaderParam("X-FTP-Pass") String pass) {
 
-        // Vérifier l'existence et le type de la ressource
-        FTPFile[] files = ftpClient.listFiles(path);
-        if (files == null || files.length == 0) {
+        System.out.println("GetFTPResource()");
+        FTPServerConfig config = FTPServerRepository.getInstance().getServer(alias);
+        if (config == null) {
             return Response.status(Response.Status.NOT_FOUND)
-                    .entity("Ressource non trouvée : " + path).build();
+                    .entity("Serveur FTP non trouvé").build();
         }
-        FTPFile file = files[0];
-        if (file.isDirectory()) {
-            // Si c'est un répertoire, renvoyer la liste des noms de fichiers/répertoires
-            String[] names = ftpClient.listNames(path);
-            ftpClient.logout();
-            ftpClient.disconnect();
-            return Response.ok(names).build();
-        } else {
-            // Si c'est un fichier, renvoyer un flux binaire pour le téléchargement
-            InputStream is = ftpClient.retrieveFileStream(path);
-            if (is == null) {
-                return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
-                        .entity("Échec de la récupération du fichier").build();
+
+        FTPClient ftpClient = new FTPClient();
+        try {
+            // Connexion et authentification FTP
+            ftpClient.connect(config.getHost(), config.getPort());
+            if (!ftpClient.login(user, pass)) {
+                return Response.status(Response.Status.UNAUTHORIZED)
+                        .entity("Authentification FTP échouée").build();
+            }
+            ftpClient.enterLocalPassiveMode();
+            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+
+            // Vérifier l'existence et le type de la ressource
+            FTPFile[] files = ftpClient.listFiles(path);
+            if (files == null || files.length == 0) {
+                return Response.status(Response.Status.NOT_FOUND)
+                        .entity("Ressource non trouvée : " + path).build();
+            }
+            FTPFile file = files[0];
+            if (file.isDirectory()) {
+                // Si c'est un répertoire, renvoyer la liste des noms de fichiers/répertoires
+                String[] names = ftpClient.listNames(path);
+                ftpClient.logout();
+                ftpClient.disconnect();
+                return Response.ok(names).build();
+            } else {
+                // Si c'est un fichier, renvoyer un flux binaire pour le téléchargement
+                InputStream is = ftpClient.retrieveFileStream(path);
+                if (is == null) {
+                    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+                            .entity("Échec de la récupération du fichier").build();
+                }
+                // On utilise ici une classe utilitaire pour fermer proprement le flux et la
+                // connexion FTP
+                return Response.ok(new InputStreamResource(is, ftpClient))
+                        .header("Content-Disposition", "attachment; filename=\"" + getFileName(path) + "\"")
+                        .build();
             }
-            // On utilise ici une classe utilitaire pour fermer proprement le flux et la connexion FTP
-            return Response.ok(new InputStreamResource(is, ftpClient))
-                    .header("Content-Disposition", "attachment; filename=\"" + getFileName(path) + "\"")
-                    .build();
+        } catch (IOException e) {
+            return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+                    .entity("Erreur FTP : " + e.getMessage()).build();
         }
-    } catch (IOException e) {
-        return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
-                .entity("Erreur FTP : " + e.getMessage()).build();
     }
-}
 
     // POST /ftps - enregistre un nouveau serveur FTP
     @POST
@@ -99,7 +101,6 @@ public Response getFTPResource(
         return Response.created(builder.build()).entity(config).build();
     }
 
-
     @DELETE
     @Path("/{alias}")
     public Response removeFTPServer(@PathParam("alias") String alias) {
-- 
GitLab