From c6fdc483f9e98ae0e461fd58a012584f21c40582 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Mon, 26 Apr 2021 21:50:31 +0000
Subject: [PATCH] Weiterspielen repariert

---
 src/de/uhilger/tango/api/MediaSteuerung.java |   42 ++++++++++++++------
 www/ui/js/app.js                             |   20 +++++++--
 2 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/src/de/uhilger/tango/api/MediaSteuerung.java b/src/de/uhilger/tango/api/MediaSteuerung.java
index 37e0d9e..d8947c7 100644
--- a/src/de/uhilger/tango/api/MediaSteuerung.java
+++ b/src/de/uhilger/tango/api/MediaSteuerung.java
@@ -48,10 +48,12 @@
  *
  * 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 POST /mz/api/strg/abspieler/weiter/titel mit dem Titel im Body
  *
  * HTTP GET /mz/api/strg/abspieler/pause 
  * HTTP GET /mz/api/strg/abspieler/stop 
- * HTTP GET /mz/api/strg/abspieler/weiter
+ * FALSCH: HTTP GET /mz/api/strg/abspieler/weiter
  * 
  * Faustregel: Anzahl Elemente eines URL plus 1 ist die Anzahl der Elemente des 
  * Ergebnisses von String.split.
@@ -71,7 +73,7 @@
   public static final String PL_CMD_ENDE = "ende";
   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_PLAYON = "weiter";
   public static final String PL_CMD_CALYPSO_STOP = "stop";
   public static final String PL_CMD_CALYPSO_PAUSE = "pause";
   public static final String PL_CMD_CALYPSO_PLAYON = "playon";
@@ -98,8 +100,8 @@
           response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_STOP);
         } else if(elems[5].equalsIgnoreCase(PL_CMD_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_CALYPSO_PLAYON);
+        //} else if(elems[5].equalsIgnoreCase(PL_CMD_PLAYON)) {
+        //  response = kommandoSenden(fs, elems[4], PL_CMD_CALYPSO_PLAYON);
         } else {
           response = meldung("Ungueltiges Kommando: " + elems[5], AbstractHandler.RTC_NOT_FOUND);
         }
@@ -117,8 +119,17 @@
   @Override
   protected String post(HttpExchange e) {
     String response;
+    String abspielerKmd = PL_CMD_PLAY;
+    String path = e.getRequestURI().toString();
+    String[] elems = path.split(Server.SLASH);
+    logger.info(elems[5]);
+    if(elems[5].equalsIgnoreCase(PL_CMD_PLAYON)) {
+      abspielerKmd = PL_CMD_CALYPSO_PLAYON;
+    } else if(elems[5].equalsIgnoreCase(PL_CMD_PLAY)){
+      abspielerKmd = PL_CMD_PLAY;
+    }
     try {
-      return urlAbspielen(e);
+      return urlAbspielen(e, abspielerKmd);
     } catch (IOException ex) {
       logger.log(Level.SEVERE, null, ex);
       return meldung(ex.getLocalizedMessage(), 404);
@@ -126,11 +137,11 @@
   }
   
   // titel.katalogUrl + titel.pfad + titel.name
-  private String urlAbspielen(HttpExchange e) throws IOException {
+  private String urlAbspielen(HttpExchange e, String abspielerKmd) throws IOException {
     String path = e.getRequestURI().toString();
     String[] elems = path.split(Server.SLASH);
     FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
-    if(elems[5].equalsIgnoreCase("titel")) {
+    if(elems[6].equalsIgnoreCase("titel")) {
       String titelJson = bodyLesen(e);
       Gson gson = new Gson();
       Object o = gson.fromJson(titelJson, fs.typeFromName(Titel.class.getSimpleName()).getType());
@@ -141,7 +152,7 @@
         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();
+          String signal = abspielKommando(fs, abspieler, server, titelUrl, abspielerKmd).toString();
           abspielerKommandoSenden(signal);
           return signal + "gesendet.";
         } else {
@@ -150,7 +161,7 @@
       } else {
         return meldung("Ungueltiger Titel.", 404);
       }
-    } else if(elems[5].equalsIgnoreCase("stream")) {
+    } else if(elems[6].equalsIgnoreCase("stream")) {
       String streamJson = bodyLesen(e);
       Gson gson = new Gson();
       Object o = gson.fromJson(streamJson, fs.typeFromName(Livestream.class.getSimpleName()).getType());
@@ -162,7 +173,7 @@
           if (entity instanceof Abspieler) {
             Abspieler abspieler = (Abspieler) entity;
             String server = "";
-            String signal = abspielKommando(fs, abspieler, server, stream.getUrl()).toString();
+            String signal = abspielKommando(fs, abspieler, server, stream.getUrl(), PL_CMD_PLAY).toString();
             abspielerKommandoSenden(signal);
             return signal + "gesendet.";
           } else {
@@ -179,6 +190,7 @@
     }
   }
   
+  
   private String kommandoSenden(Storage s, String aName, String kommando) {
     Entity entity = s.read(FileStorage.ST_ABSPIELER, aName);
     if (entity instanceof Abspieler) {
@@ -187,12 +199,15 @@
       kmd.append(abspieler.getUrl());
       kmd.append(kommando);
       String signal = kmd.toString();
+      //String server = getEinstellung(s, App.getRs(App.RB_HOST), DEFAULT_HOST);
+      //String signal = abspielKommando(s, abspieler, server, stream.getUrl(), PL_CMD_PLAY).toString();
       abspielerKommandoSenden(signal);
       return signal + " gesendet.";
     } else {
       return meldung("Abspielliste nicht gefunden.", AbstractHandler.RTC_NOT_FOUND);
     }
   }
+  
   
   private String ersterTitel(Storage s, String aName, String lName) {
     String response;
@@ -285,7 +300,7 @@
     kmd.append(server);
     kmd.append(titelUrl);
     */
-    StringBuilder kmd = abspielKommando(s, abspieler, server, titelUrl);
+    StringBuilder kmd = abspielKommando(s, abspieler, server, titelUrl, PL_CMD_PLAY);
     kmd.append(PL_PARAM_RUECK);
     kmd.append(server);
     kmd.append(PL_API_STRG);
@@ -295,12 +310,13 @@
     return kmd.toString();
   }
 
-  private StringBuilder abspielKommando(Storage s, Abspieler abspieler, String server, String titelUrl) {
+  private StringBuilder abspielKommando(Storage s, Abspieler abspieler, String server, String titelUrl, String abspielKmd) {
     
     // Kommando an den Abspieler zusammenbauen
     StringBuilder kmd = new StringBuilder();
     kmd.append(abspieler.getUrl());
-    kmd.append(PL_CMD_PLAY);
+    //kmd.append(PL_CMD_PLAY);
+    kmd.append(abspielKmd);
     // Parameter fuer den Abspieler holen
     kmd.append(getEinstellung(s, App.getRs(App.RB_PLAYERPARAMS), PL_DEFAULT_PARAMS));
     kmd.append(server);
diff --git a/www/ui/js/app.js b/www/ui/js/app.js
index 691f93c..af2c49d 100644
--- a/www/ui/js/app.js
+++ b/www/ui/js/app.js
@@ -358,9 +358,7 @@
       self.addEvtListener('#pause-btn', 'click', function() {
         self.kommando('pause');
       });
-      self.addEvtListener('#weiter-btn', 'click', function() {
-        self.kommando('weiter');
-      });
+      self.addEvtListener('#weiter-btn', 'click', self.weiter);
 
       self.addEvtListener('#hier-btn', 'click', self.hier_spielen);
       
@@ -408,14 +406,14 @@
       var titel = self.titelErmitteln(document.querySelector(".selected"));
       var playername = document.querySelector('#abspieler').value;
       console.log('plname: ' + playername + ' url: ' + titel.katalogUrl + titel.pfad + titel.name);
-      self.http_post('../api/strg/' + playername + '/titel', JSON.stringify(titel), function(responseText) {
+      self.http_post('../api/strg/' + playername + '/play/titel', JSON.stringify(titel), function(responseText) {
         self.meldung_mit_timeout(responseText, 1500);
       });   
     } else if(bereichName === 'Livestream-Auswahl') {
       var streamName = document.querySelector(".selected").textContent;
       var playername = document.querySelector('#abspieler').value;
       var stream = new Livestream(streamName, '-');
-      self.http_post('../api/strg/' + playername + '/stream', JSON.stringify(stream), function(responseText) {
+      self.http_post('../api/strg/' + playername + '/play/stream', JSON.stringify(stream), function(responseText) {
         self.meldung_mit_timeout(responseText, 1500);
       });   
     } else {
@@ -430,6 +428,18 @@
     }
   };
   
+  this.weiter = function() {
+    var bereichName = document.querySelector('.bereich-name').textContent;
+    if(bereichName === '') {
+      var titel = self.titelErmitteln(document.querySelector(".selected"));
+      var playername = document.querySelector('#abspieler').value;
+      console.log('plname: ' + playername + ' url: ' + titel.katalogUrl + titel.pfad + titel.name);
+      self.http_post('../api/strg/' + playername + '/weiter/titel', JSON.stringify(titel), function(responseText) {
+        self.meldung_mit_timeout(responseText, 1500);
+      });   
+    }
+  };
+  
   this.kommando = function(kommando) {
     var abs = document.querySelector('#abspieler').value;
     self.http_get('../api/strg/' + abs + '/' + kommando, function(responseText) {

--
Gitblit v1.9.3