Hallo zusammen,
ich habe die HTTP-Remote-Schnittstelle um die Möglichkeit erweitert, auch POST-Requests verarbeiten zu können.
Der gesamte Inhalt des HTTP Body wird dann in das angegebene interne KO geschrieben.
Ich nutze diese Funktionalität im Zusammenhang mit Webhooks, also quasi Callbacks auf HTTP-Basis.
Diese Callbacks nutzen in der Regel HTTP POST Requests mit JSON-Daten im Body.
Diese JSON-Daten kann man nun direkt einem internen KO zuweisen.
Als Beispiel sei hier die Node.js HTTP-API für SONOS genannt, die über Webhooks diverse Ereignisse meldet, wie zum Beispiel Topologie-Änderungen, Zustandsänderung eines Players, etc. Diese Infos stehen mit Hilfe des unten angehängten Patches direkt in Edomi zur Verfügung und kann sie mit entsprechenden LBS weiterverarbeiten.
Es wird die Datei index.php in /usr/local/edomi/www/remote geändert.
ich habe die HTTP-Remote-Schnittstelle um die Möglichkeit erweitert, auch POST-Requests verarbeiten zu können.
Der gesamte Inhalt des HTTP Body wird dann in das angegebene interne KO geschrieben.
Ich nutze diese Funktionalität im Zusammenhang mit Webhooks, also quasi Callbacks auf HTTP-Basis.
Diese Callbacks nutzen in der Regel HTTP POST Requests mit JSON-Daten im Body.
Diese JSON-Daten kann man nun direkt einem internen KO zuweisen.
Als Beispiel sei hier die Node.js HTTP-API für SONOS genannt, die über Webhooks diverse Ereignisse meldet, wie zum Beispiel Topologie-Änderungen, Zustandsänderung eines Players, etc. Diese Infos stehen mit Hilfe des unten angehängten Patches direkt in Edomi zur Verfügung und kann sie mit entsprechenden LBS weiterverarbeiten.
Es wird die Datei index.php in /usr/local/edomi/www/remote geändert.
Code:
--- index.php.orig 2017-03-21 01:12:48.000000000 +0100 +++ index.php 2017-05-21 15:58:33.445629414 +0200 @@ -46,6 +46,8 @@ header("Content-Type: text/plain"); if (checkRemoteLoginPass(httpGetVar('login'),httpGetVar('pass'))) { + switch($_SERVER['REQUEST_METHOD']) { + case 'GET': if (isset($_GET['kovalue'])) { $gaValue=httpGetVar('kovalue'); @@ -67,6 +69,22 @@ } } + break; + + case 'POST': + $postdata = file_get_contents("php://input"); + //Wert setzen, hier den kompletten Body des HTTP POST Requests + if (httpKoSet($gaId,$postdata)) { + echo 'OK;'.$gaId.';'.$postdata.';'; + } else { + echo 'ERROR;'.$gaId.';FORBIDDEN;'; //KO ist nicht in db.httpKo gelistet + } + + break; + + default: + } + } else { echo 'ERROR;LOGIN;'; //falsches Login/Pass
Kommentar