diff --git a/src/main/java/fil/sr2/flopbox/FTPResource.java b/src/main/java/fil/sr2/flopbox/FTPResource.java index bfa68832520680b05312a37fa4c268b91a2e7399..66019ab5d831799fbab95f36b717be27ea211527 100644 --- a/src/main/java/fil/sr2/flopbox/FTPResource.java +++ b/src/main/java/fil/sr2/flopbox/FTPResource.java @@ -174,22 +174,73 @@ public class FTPResource { } } + /* + * @POST + * + * @Path("/{alias}/{path: .+}") + * public Response createDirectory( + * + * @PathParam("alias") String alias, + * + * @PathParam("path") String path, + * + * @HeaderParam("X-FTP-User") String user, + * + * @HeaderParam("X-FTP-Pass") String pass) throws SocketException, IOException { + * + * System.out.println("createFirectory()"); + * FTPClient ftp = new FTPClient(); + * try { + * FTPServerConfig config = FTPServerRepository.getInstance().getServer(alias); + * ftp.connect(config.getHost(), config.getPort()); + * ftp.login(user, pass); + * return ftp.makeDirectory(path) ? Response.created(URI.create(path)).build() + * : Response.status(Response.Status.BAD_REQUEST).build(); + * } finally { + * try { + * if (ftp.isConnected()) { + * ftp.logout(); + * ftp.disconnect(); + * } + * } catch (IOException e) { + * e.printStackTrace(); + * } + * } + * } + */ @POST @Path("/{alias}/{path: .+}") - public Response createDirectory( + @Consumes({ MediaType.APPLICATION_OCTET_STREAM, MediaType.TEXT_PLAIN }) // Accepter les fichiers + public Response createResource( @PathParam("alias") String alias, @PathParam("path") String path, @HeaderParam("X-FTP-User") String user, - @HeaderParam("X-FTP-Pass") String pass) throws SocketException, IOException { + @HeaderParam("X-FTP-Pass") String pass, + InputStream inputStream) { // Contenu optionnel - System.out.println("createFirectory()"); FTPClient ftp = new FTPClient(); try { FTPServerConfig config = FTPServerRepository.getInstance().getServer(alias); ftp.connect(config.getHost(), config.getPort()); ftp.login(user, pass); - return ftp.makeDirectory(path) ? Response.created(URI.create(path)).build() - : Response.status(Response.Status.BAD_REQUEST).build(); + + // Si le flux est vide (0 octet), créer un répertoire + if (inputStream.available() == 0) { + boolean dirCreated = ftp.makeDirectory(path); + return dirCreated + ? Response.created(URI.create(path)).build() + : Response.status(400).entity("Erreur création répertoire").build(); + } + // Sinon, créer un fichier + else { + boolean fileCreated = ftp.storeFile(path, inputStream); + return fileCreated + ? Response.created(URI.create(path)).build() + : Response.status(400).entity("Erreur création fichier").build(); + } + + } catch (IOException e) { + return Response.serverError().entity("Erreur FTP: " + e.getMessage()).build(); } finally { try { if (ftp.isConnected()) {