Persoenliche Mediazentrale
ulrich
2021-04-14 f6498474c3b9e0b7770e0221755f3c91922e6b0a
src/de/uhilger/mediaz/api/AbstractHandler.java
@@ -1,11 +1,23 @@
/*
 * 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.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.io.BufferedReader;
@@ -13,13 +25,13 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author ulrich
 * @author Ulrich Hilger
 * @version 1, 8.4.2021
 */
public abstract class AbstractHandler extends JsonHelper implements HttpHandler {
  
@@ -37,11 +49,19 @@
  /** Name der HTTP Methode DELETE */
  public static final String HTTP_DELETE = "DELETE";
  
  public static final int RTC_OK = 200;
  public static final int RTC_NOT_FOUND = 404;
  protected int returnCode;
  public AbstractHandler() {
    this.returnCode = RTC_OK;
  }
  @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);
@@ -49,7 +69,7 @@
          response = json;
        } else {
          response = "nicht gefunden";
          code = 404;
          //returnCode = RTC_NOT_FOUND;
        }
        break;
        
@@ -59,7 +79,6 @@
        
      case HTTP_POST:
        response = post(e);
        code = 404;
        break;
        
      case HTTP_DELETE:
@@ -72,10 +91,20 @@
        break;
    }
    logger.fine(response);
    e.sendResponseHeaders(code, response.length());
    Headers headers = e.getResponseHeaders();
    headers.add("Content-Type", "application/json");
    e.sendResponseHeaders(getReturnCode(), response.length());
    OutputStream os = e.getResponseBody();
    os.write(response.getBytes());
    os.close();        
  }
  protected void setReturnCode(int code) {
    this.returnCode = code;
  }
  protected int getReturnCode() {
    return returnCode;
  }
  
  protected String bodyLesen(HttpExchange e) throws IOException {
@@ -89,14 +118,30 @@
    }
    r.close();
    String json = sb.toString();
    logger.log(Level.FINE, "json: {0}", json);
    return json;
  }
  protected String put(HttpExchange e) throws IOException {
    setReturnCode(RTC_NOT_FOUND);
    return "nicht unterstuetzt";
  }
  protected String post(HttpExchange e) {
    setReturnCode(RTC_NOT_FOUND);
    return "nicht unterstuetzt";
  }
  protected boolean delete(HttpExchange e) {
    setReturnCode(RTC_NOT_FOUND);
    return false;
  }
  
  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);
  */
  
}