diff --git a/src/main/java/fil/sr2/flopbox/FTPResource.java b/src/main/java/fil/sr2/flopbox/FTPResource.java index 6872e185af6a8200d46d591268a51a0674c6c91b..b42c60db66df11e8cb709ee837a24b069ceefd12 100644 --- a/src/main/java/fil/sr2/flopbox/FTPResource.java +++ b/src/main/java/fil/sr2/flopbox/FTPResource.java @@ -81,15 +81,6 @@ public class FTPResource { return Response.ok(results).build(); } - @DELETE - @Path("/{alias}") - public Response removeFTPServer(@PathParam("alias") String alias) { - System.out.println("removeFTPServer()"); - boolean removed = FTPServerRepository.getInstance().removeServer(alias); - return removed ? Response.noContent().build() - : Response.status(Response.Status.NOT_FOUND).build(); - } - @PUT @Path("/{alias}") @Consumes(MediaType.APPLICATION_JSON) @@ -100,6 +91,15 @@ public class FTPResource { : Response.status(Response.Status.NOT_FOUND).build(); } + @DELETE + @Path("/{alias}") + public Response removeFTPServer(@PathParam("alias") String alias) { + System.out.println("removeFTPServer()"); + boolean removed = FTPServerRepository.getInstance().removeServer(alias); + return removed ? Response.noContent().build() + : Response.status(Response.Status.NOT_FOUND).build(); + } + // --- Endpoints pour les opérations FTP --- @GET @@ -143,7 +143,6 @@ public class FTPResource { } // GET pour télécharger une ressource : fichier ou dossier compressé en ZIP - @GET @Path("/{alias}/{path: .+}") public Response getFTPResource( @@ -199,20 +198,18 @@ public class FTPResource { } } - @POST - @Path("/{alias}/upload-dir/{path: .*}") - @Consumes(MediaType.APPLICATION_OCTET_STREAM) - public Response uploadDirectory( + // DELETE pour supprimer une ressource (fichier ou dossier récursivement) + @DELETE + @Path("/{alias}/{path: .+}") + public Response deleteResource( @PathParam("alias") String alias, @PathParam("path") String path, @HeaderParam("X-FTP-User") String user, - @HeaderParam("X-FTP-Pass") String pass, - InputStream zipStream) { - - System.out.println("uploadDirectory()"); + @HeaderParam("X-FTP-Pass") String pass) { + System.out.println("deleteResource()"); try { - ftpService.uploadDirectoryAsZip(alias, path, user, pass, zipStream); - return Response.ok().build(); + ftpService.deleteResource(alias, path, user, pass); + return Response.noContent().build(); } catch (FTPException e) { return Response.status(e.getStatus()).entity(e.getMessage()).build(); } catch (IOException e) { @@ -242,18 +239,20 @@ public class FTPResource { } } - // DELETE pour supprimer une ressource (fichier ou dossier récursivement) - @DELETE - @Path("/{alias}/{path: .+}") - public Response deleteResource( + @POST + @Path("/{alias}/upload-dir/{path: .*}") + @Consumes(MediaType.APPLICATION_OCTET_STREAM) + public Response uploadDirectory( @PathParam("alias") String alias, @PathParam("path") String path, @HeaderParam("X-FTP-User") String user, - @HeaderParam("X-FTP-Pass") String pass) { - System.out.println("deleteResource()"); + @HeaderParam("X-FTP-Pass") String pass, + InputStream zipStream) { + + System.out.println("uploadDirectory()"); try { - ftpService.deleteResource(alias, path, user, pass); - return Response.noContent().build(); + ftpService.uploadDirectoryAsZip(alias, path, user, pass, zipStream); + return Response.ok().build(); } catch (FTPException e) { return Response.status(e.getStatus()).entity(e.getMessage()).build(); } catch (IOException e) { diff --git a/src/main/java/fil/sr2/flopbox/FTPService.java b/src/main/java/fil/sr2/flopbox/FTPService.java index 2104c537af44e0a1f014532d4999fbc84e96354e..535933cdbf8ef375f7e63df64f7bc90e83e0684f 100644 --- a/src/main/java/fil/sr2/flopbox/FTPService.java +++ b/src/main/java/fil/sr2/flopbox/FTPService.java @@ -390,9 +390,7 @@ public class FTPService { String newPath = currentPath.isEmpty() ? node.name : currentPath + "/" + node.name; // Si le nom contient le terme recherché (fichier ou dossier) if (node.name.toLowerCase().contains(searchTerm.toLowerCase())) { - // Construction de l’URL FTP. On suppose que FTPServerConfig possède une méthode - // getHost(). - String ftpUrl = "ftp://" + config.getHost() + "/" + newPath; + String ftpUrl = "http://" + config.getHost() + "/" + newPath; urls.add(ftpUrl); } // Parcours des enfants si le nœud est un répertoire diff --git a/src/test/java/fil/sr2/flopbox/FTPResourceTest.java b/src/test/java/fil/sr2/flopbox/FTPResourceTest.java index ad313d8fa1c3aaef16bebfe9b949eea5885ba493..b24f440cc4830d0b1998f6e20ccc208a06039854 100644 --- a/src/test/java/fil/sr2/flopbox/FTPResourceTest.java +++ b/src/test/java/fil/sr2/flopbox/FTPResourceTest.java @@ -135,10 +135,12 @@ public class FTPResourceTest { @Test public void testDeleteResource() throws IOException { - File toDelete = new File(ftpHomeDir, "to_delete.txt"); - toDelete.createNewFile(); + String filename = "/to_delete.txt"; + File toDelete = new File(ftpHomeDir, filename); + FileUtils.writeStringToFile(toDelete, "test content", StandardCharsets.UTF_8); + FTPResource resource = new FTPResource(); - Response response = resource.deleteResource(ALIAS, "to_delete.txt", USER, PASS); + Response response = resource.deleteResource(ALIAS, filename, USER, PASS); assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus()); assertFalse(toDelete.exists()); }