package de.uhilger.avdirektor.handler;
|
|
import com.sun.net.httpserver.HttpExchange;
|
import com.sun.net.httpserver.HttpHandler;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.function.Consumer;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
|
/**
|
* Es koennen mehrere Varianten beim Abspielen verwendet werden.
|
*
|
* Abspielen eines Titels
|
* abspielenMitParameternUndRueckmeldung(urlStr, null, null, 1)
|
*
|
* Abspielen eines Titels mit Rueckmeldung (z.B. fuer Playlisten)
|
* abspielenMitParameternUndRueckmeldung(urlStr, null, meldeUrlStr, 1)
|
*
|
* Abspielen mit Parametern
|
* abspielenMitParameternUndRueckmeldung(urlStr, parameter, null, 1)
|
*
|
* Abspielen mit Parametern und Rueckmeldung
|
* abspielenMitParameternUndRueckmeldung(urlStr, parameter, meldeUrlStr, 1)
|
*
|
* Token wird zur Zeit nicht genutzt, hier kann einfach eine beliebige
|
* Zahl uebergeben werden.
|
*
|
* Die drei Parameter t, p, r werden als Query im URL erwartet. Beispiele:
|
* t = titel
|
* p = parameter
|
* r = url fuer rueckmeldung
|
*
|
*
|
* /avd/play?t=/Pfad/zum/Titel.mp3
|
* /avd/play?t=/Pfad/zum/Titel.mp3&p=-o=local%20-timeout=60
|
* /avd/play?t=/Pfad/zum/Titel.mp3&r=http:/uhilger.de/rueckmelde/pfad
|
* /avd/play?t=/Pfad/zum/Titel.mp3&p=-o=local%20-timeout=60&r=http:/uhilger.de/rueckmelde/pfad
|
*
|
* String urlStr, String parameter, String meldeUrlStr, String token
|
*
|
*
|
*
|
*
|
*
|
* @author ulrich
|
*/
|
public class PlayHandler extends OMXPlayer implements HttpHandler {
|
|
private static final Logger logger = Logger.getLogger(PlayHandler.class.getName());
|
|
@Override
|
public void handle(HttpExchange t) throws IOException {
|
logger.log(Level.FINE, "RequestURI.getPath: {0}", t.getRequestURI().getPath());
|
Map map = getQueryMap(t);
|
Set keys = map.keySet();
|
StringBuffer buf = new StringBuffer();
|
buf.append("play");
|
buf.append(System.lineSeparator());
|
keys.forEach((Object key) -> {
|
buf.append("key: ");
|
buf.append(key);
|
buf.append(System.lineSeparator());
|
buf.append("value: ");
|
buf.append(map.get(key));
|
buf.append(System.lineSeparator());
|
logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)});
|
});
|
|
String response = buf.toString();
|
t.sendResponseHeaders(200, response.length());
|
OutputStream os = t.getResponseBody();
|
os.write(response.getBytes());
|
os.close();
|
}
|
}
|