From b56bb3e0be136a9465589df74dd443b2bc063f90 Mon Sep 17 00:00:00 2001 From: ulrich Date: Fri, 09 Apr 2021 17:22:54 +0000 Subject: [PATCH] Abspielen in Arbeit --- src/de/uhilger/mediaz/api/AbstractHandler.java | 122 ++++++++++++++++++++++++++++++++-------- 1 files changed, 96 insertions(+), 26 deletions(-) diff --git a/src/de/uhilger/mediaz/api/AbstractHandler.java b/src/de/uhilger/mediaz/api/AbstractHandler.java index 4692d5d..038b647 100644 --- a/src/de/uhilger/mediaz/api/AbstractHandler.java +++ b/src/de/uhilger/mediaz/api/AbstractHandler.java @@ -1,41 +1,111 @@ /* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. + Mediazentrale - Personal Media Center + Copyright (C) 2021 Ulrich Hilger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ package de.uhilger.mediaz.api; -import com.google.gson.Gson; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.util.logging.Logger; + /** * - * @author ulrich + * @author Ulrich Hilger + * @version 1, 8.4.2021 */ -public class AbstractHandler { +public abstract class AbstractHandler extends JsonHelper implements HttpHandler { - protected String jsonWithEnclosingType(Object o) { - /* - StringBuilder sb = new StringBuilder(); - sb.append("{\""); - sb.append(o.getClass().getSimpleName()); - sb.append("\": "); - Gson gson = new Gson(); - sb.append(gson.toJson(o)); - sb.append("}"); - return sb.toString(); - */ - return jsonWithCustomType(o, o.getClass().getSimpleName()); + private static final Logger logger = Logger.getLogger(AbstractHandler.class.getName()); + + /** Name der HTTP Methode GET */ + public static final String HTTP_GET = "GET"; + + /** Name der HTTP Methode PUT */ + public static final String HTTP_PUT = "PUT"; + + /** Name der HTTP Methode POST */ + public static final String HTTP_POST = "POST"; + + /** Name der HTTP Methode DELETE */ + public static final String HTTP_DELETE = "DELETE"; + + @Override + public void handle(HttpExchange e) throws IOException { + String method = e.getRequestMethod(); + String response = ""; + int code = 200; + switch(method) { + case HTTP_GET: + String json = get(e); + if(json != null) { + response = json; + } else { + response = "nicht gefunden"; + code = 404; + } + break; + + case HTTP_PUT: + response = put(e); + break; + + case HTTP_POST: + response = post(e); + code = 404; + break; + + case HTTP_DELETE: + boolean geloescht = delete(e); + if(geloescht) { + response = "geloescht"; + } else { + response = "nicht geloescht"; + } + break; + } + e.sendResponseHeaders(code, response.length()); + OutputStream os = e.getResponseBody(); + os.write(response.getBytes()); + os.close(); } - protected String jsonWithCustomType(Object o, String typeName) { + protected String bodyLesen(HttpExchange e) throws IOException { + InputStream is = e.getRequestBody(); + BufferedReader r = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); - sb.append("{\""); - sb.append(typeName); - sb.append("\": "); - Gson gson = new Gson(); - sb.append(gson.toJson(o)); - sb.append("}"); - return sb.toString(); + String line = r.readLine(); + while(line != null) { + sb.append(line); + line = r.readLine(); + } + r.close(); + String json = sb.toString(); + return json; } + + + protected abstract String get(HttpExchange e); + protected abstract String put(HttpExchange e) throws IOException; + protected abstract String post(HttpExchange e); + protected abstract boolean delete(HttpExchange e); } -- Gitblit v1.9.3