Persoenliche Mediazentrale
ulrich
2021-04-24 4bbb9f05ba12894477e611eb9b75113e3e3cce29
src/de/uhilger/mediaz/api/MediaSteuerung.java
@@ -26,6 +26,7 @@
import de.uhilger.mediaz.entity.Abspielliste;
import de.uhilger.mediaz.entity.Einstellung;
import de.uhilger.mediaz.entity.Entity;
import de.uhilger.mediaz.entity.Livestream;
import de.uhilger.mediaz.entity.Titel;
import de.uhilger.mediaz.store.FileStorage;
import de.uhilger.mediaz.store.Storage;
@@ -45,7 +46,8 @@
 * HTTP GET /mz/api/strg/abspieler/play/liste/[name] 
 * HTTP GET /mz/api/strg/abspieler/ende
 *
 * HTTP POST /mz/api/strg/abspieler/play mit dem Titel im Body
 * HTTP POST /mz/api/strg/abspieler/play/titel mit dem Titel im Body
 * HTTP POST /mz/api/strg/abspieler/play/stream mit dem Livestream im Body (nur Name gefuellt)
 *
 * HTTP GET /mz/api/strg/abspieler/pause 
 * HTTP GET /mz/api/strg/abspieler/stop 
@@ -62,7 +64,7 @@
  private static final Logger logger = Logger.getLogger(MediaSteuerung.class.getName());
  public static final String PL_CMD_PLAY = "avd/play";
  public static final String PL_CMD_PLAY = "calypso/play";
  public static final String PL_DEFAULT_PARAMS = "?titel=";
  public static final String PL_PARAM_RUECK = "&r=";
  public static final String PL_API_STRG = "/api/strg/"; 
@@ -70,9 +72,9 @@
  public static final String PL_CMD_STOP = "stop";
  public static final String PL_CMD_PAUSE = "pause";
  public static final String PL_CMD_PLAYON = "playon";
  public static final String PL_CMD_AVD_STOP = "avd/stop";
  public static final String PL_CMD_AVD_PAUSE = "avd/pause";
  public static final String PL_CMD_AVD_PLAYON = "avd/playon";
  public static final String PL_CMD_CALYPSO_STOP = "calypso/stop";
  public static final String PL_CMD_CALYPSO_PAUSE = "calypso/pause";
  public static final String PL_CMD_CALYPSO_PLAYON = "calypso/playon";
  public static final String DEFAULT_HOST = "http://localhost:9090";
  private final Map spielt = new HashMap();
@@ -93,11 +95,11 @@
          response = naechsterTitel(fs, elems[4]);
        } else if(elems[5].equalsIgnoreCase(PL_CMD_STOP)) {
          spielt.remove(elems[4]);
          response = kommandoSenden(fs, elems[4], PL_CMD_AVD_STOP);
          response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_STOP);
        } else if(elems[5].equalsIgnoreCase(PL_CMD_PAUSE)) {
          response = kommandoSenden(fs, elems[4], PL_CMD_AVD_PAUSE);
          response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_PAUSE);
        } else if(elems[5].equalsIgnoreCase(PL_CMD_PLAYON)) {
          response = kommandoSenden(fs, elems[4], PL_CMD_AVD_PLAYON);
          response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_PLAYON);
        } else {
          response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
        }
@@ -128,25 +130,52 @@
    String path = e.getRequestURI().toString();
    String[] elems = path.split(Server.SLASH);
    FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
    String titelJson = bodyLesen(e);
    Gson gson = new Gson();
    Object o = gson.fromJson(titelJson, fs.typeFromName(Titel.class.getSimpleName()).getType());
    if(o instanceof Titel) {
      Titel titel = (Titel) o;
      String titelUrl = titel.getKatalogUrl() + titel.getPfad() + titel.getName();
      Entity entity = fs.read(FileStorage.ST_ABSPIELER, elems[4]);
      if (entity instanceof Abspieler) {
        Abspieler abspieler = (Abspieler) entity;
        String server = getEinstellung(fs, App.getRs(App.RB_HOST), DEFAULT_HOST);
        String signal = abspielKommando(fs, abspieler, server, titelUrl).toString();
        abspielerKommandoSenden(signal);
        return signal + "gesendet.";
    if(elems[5].equalsIgnoreCase("titel")) {
      String titelJson = bodyLesen(e);
      Gson gson = new Gson();
      Object o = gson.fromJson(titelJson, fs.typeFromName(Titel.class.getSimpleName()).getType());
      if(o instanceof Titel) {
        Titel titel = (Titel) o;
        String titelUrl = titel.getKatalogUrl() + titel.getPfad() + titel.getName();
        Entity entity = fs.read(FileStorage.ST_ABSPIELER, elems[4]);
        if (entity instanceof Abspieler) {
          Abspieler abspieler = (Abspieler) entity;
          String server = getEinstellung(fs, App.getRs(App.RB_HOST), DEFAULT_HOST);
          String signal = abspielKommando(fs, abspieler, server, titelUrl).toString();
          abspielerKommandoSenden(signal);
          return signal + "gesendet.";
        } else {
          return meldung("Ungueltiger Abspieler.", 404);
        }
      } else {
        return meldung("Ungueltiger Abspieler.", 404);
        return meldung("Ungueltiger Titel.", 404);
      }
    } else if(elems[5].equalsIgnoreCase("stream")) {
      String streamJson = bodyLesen(e);
      Gson gson = new Gson();
      Object o = gson.fromJson(streamJson, fs.typeFromName(Livestream.class.getSimpleName()).getType());
      if(o instanceof Livestream) {
        Entity entity = fs.read(FileStorage.ST_LIVESTREAM, ((Livestream) o).getName());
        if(entity instanceof Livestream) {
          Livestream stream = (Livestream) entity;
          entity = fs.read(FileStorage.ST_ABSPIELER, elems[4]);
          if (entity instanceof Abspieler) {
            Abspieler abspieler = (Abspieler) entity;
            String server = "";
            String signal = abspielKommando(fs, abspieler, server, stream.getUrl()).toString();
            abspielerKommandoSenden(signal);
            return signal + "gesendet.";
          } else {
            return meldung("Ungueltiger Abspieler.", 404);
          }
        } else {
          return meldung("Ungueltiger Livestream.", 404);
        }
      } else {
       return meldung("Ungueltiger Livestream.", 404);
      }
    } else {
      return meldung("Ungueltiger Titel.", 404);
      return meldung("Ungueltiger URL.", 404);
    }
  }
  
@@ -317,8 +346,4 @@
    setReturnCode(code);
    return text;
  }
  // rpi4-az:9090/avd/play?titel=/Filme/S/sound_city.m4v&th=60&ti=60&o=local
  // aUrl http://rpi4-wz:9090/
  // titelUrl /media/test/A/The-Alan-Parsons-Project/I-Robot/02-I-Wouldnt-Want-to-Be-Like-You.mp3
}