src/de/uhilger/neon/fm/AbstractFileActor.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/neon/fm/FileCreator.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/neon/fm/FileEraser.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/neon/fm/FileList.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/neon/fm/FileManipulator.java | ●●●●● patch | view | raw | blame | history |
src/de/uhilger/neon/fm/AbstractFileActor.java
@@ -41,13 +41,30 @@ protected HttpHelper h; protected String base; public void run(HttpExchange exchange) { /** * Hilfsmittel bereitstellen, die beim Ausfuehren eines Actors fuer Dateioperationen * immer benoetigt werden. * * Von dieser Klasse abgeleitete Actos sollten mit super.run(exchange) stets diese * Methode ausfuehren. * * @param exchange Infos zu HTTP Request, -Response, Kontext usw. */ protected void init(HttpExchange exchange) { base = exchange.getHttpContext().getAttributes().get(FileServer.ATTR_FILE_BASE).toString(); h = new HttpHelper(); fileName = h.getFileName(exchange); file = new File(base, fileName); } /** * Eine Dateiliste als String Array aus einer Dateiliste im JSON-Format * erzeugen, die aus dem HTTP-Request-Body gelesen wurde * * @param exchange Infos zu HTTP Request, -Response, Kontext usw. * @return die Dateiliste als String Array * @throws IOException wenn etwas schief geht */ protected String[] dateiliste(HttpExchange exchange) throws IOException { String body = h.bodyLesen(exchange); //logger.fine("dateien: " + body); @@ -55,6 +72,14 @@ return gson.fromJson(body, String[].class); } /** * Den Body eines HTTP Request in eine Datei schreiben * * TODO das evtl. noch in java.nio.file ueberfuehren.. * * @param e Infos zu HTTP Request, -Response, Kontext usw. * @throws IOException wenn etwas schief geht */ protected void speichern(HttpExchange e) throws IOException { String body = h.bodyLesen(e); if (new Writer().speichern(file, body) == 0) { @@ -64,6 +89,12 @@ } } /** * Eine Fehler-Antwort als HTTP Status Code 401 not found senden * * @param exchange Infos zu HTTP Request, -Response, Kontext usw. * @param ex der aufgetretene Fehler */ protected void fehlerAntwort(HttpExchange exchange, Exception ex) { try { Logger.getLogger(AbstractFileActor.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); @@ -73,10 +104,22 @@ } } /** * Eine Antwort als HTTP Response senden * * @param exchange Infos zu HTTP Request, -Response, Kontext usw. * @param code HTTP Status code fuer die Antwort * @param text Inhalt der Antwort * @throws IOException wenn etwas schif geht */ protected void antwort(HttpExchange exchange, int code, String text) throws IOException { new HttpResponder().antwortSenden(exchange, code, text); } /** * Die Zeiger auf die von einer Instanz dieser abstrakten Basisklasse * erzeugten Objekte wieder frei geben */ protected void free() { file = null; fileName = null; src/de/uhilger/neon/fm/FileCreator.java
@@ -26,15 +26,35 @@ import java.util.logging.Logger; /** * Eine Klasse mit Methoden zur Erzeugung von Ordnern und Dateien * * @author Ulrich Hilger * @version 0.1, 08.11.2024 */ public class FileCreator extends AbstractFileActor { public void run(HttpExchange exchange) { /** * Die methode run legt Ordner und Dateien neu an, sofern im hier * uebergebenen HttpExchange Objekt die folgenden Angaben zu finden * sind: * * <pre> * Datei neu anlegen (ohne Ueberschreiben): * http://localhost:[port]/[kontext]/pfad/zur/datei.txt * Body: Dateiinhalt * Erzeugt eine neue Datei mit einer laufenden Nummer, * falls die per URL angegebene Datei schon existiert * * Ordner anlegen: * http://localhost:[port]/[kontext]/pfad/zum/ordner/ * erzeugt einen HTTP-Fehler 422, wenn der Ordner schon existiert * </pre> * * @param exchange Infos zu HTTP Request, -Response, Kontext usw. */ public void create(HttpExchange exchange) { try { super.run(exchange); init(exchange); if (fileName.endsWith(FileServer.STR_SLASH)) { // es ist ein Ordner if (!file.exists()) { file.mkdir(); src/de/uhilger/neon/fm/FileEraser.java
@@ -34,7 +34,7 @@ public void run(HttpExchange exchange) { try { super.run(exchange); init(exchange); String[] dateiNamen = dateiliste(exchange); new Eraser().deleteFiles(fileName, Arrays.asList(dateiNamen), base); antwort(exchange, HttpResponder.SC_OK, "Dateien geloescht."); src/de/uhilger/neon/fm/FileList.java
@@ -34,7 +34,7 @@ public void run(HttpExchange exchange) { try { super.run(exchange); init(exchange); HttpContext ctx = exchange.getHttpContext(); String base = ctx.getAttributes().getOrDefault(FileServer.ATTR_FILE_BASE, "").toString(); if(base.length() == 0) { src/de/uhilger/neon/fm/FileManipulator.java
@@ -58,7 +58,7 @@ public void run(HttpExchange exchange) { try { super.run(exchange); init(exchange); String query = exchange.getRequestURI().getQuery(); if (query != null) { String[] params = query.split(FileServer.STR_EQUAL);