HttpUtils redirects und cookies für HTTPMOD

Begonnen von StefanStrobel, 30 November 2014, 12:19:37

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo,

für das neue HTTPMOD, in dem ich auch Session IDs und Form basierte Logins unterstützen möchte, benötige ich Zugriff auf die Cookies, die in der HTTP Response im Header gesetzt werden. Leider geben die HttpUtils die Header bisher nicht weiter. Zudem reagiert eine Pellet-Heizung, die ich mir gerade ansehe, auf die Login-Daten mit einem Redirect, in dem die Cookies gesetzt werden.
(http://forum.fhem.de/index.php/topic,28844.0.html)

Damit HTTPMOD mit solchen Dingen klar kommt, möchte ich den angefügten Patch für HttpUtils vorschlagen. Er fügt drei optionale Parameter ein:

1) $hash->{ignoreredirects} verhindert dass HttpUtils den Redirects folgt.
2) $hash->{returnheaders} weist HttpUtils an, die Header in der Response nicht wegzuwerfen
3) $hash->{logdevice} wird von HttpUtils auf $hash->{NAME} gesetzt, damit man das Logging der HttpUtils über HTTPMOD steuern kann.

entsprechend habe ich alle Log3 Aufrufe so geändert, dass sie logdevice verwenden (wo es möglich war)

Gruss
   Stefan

EDIT: diff aktualisiert - war noch ein Fehler drin

rudolfkoenig

Habs (mehr oder weniger) uebernommen:
- ignoreredirects: unveraendert
- returnheaders: gibts nicht, dafuer aber wird der Header in $hash->{HTTPHEADER} immer zurueckgeliefert.
- logdevice: gibts nicht, dafuer aber wird (wie sonst ueblich) $hash->{NAME} verwendet.

StefanStrobel

Das war schnell, Vielen Dank!

Ich hab die HTTPMOD-Beta entsprechend angepasst (http://forum.fhem.de/index.php/topic,29471.0.html)

Gruss
   Stefan

Markus Bloch

Hallo zusammen,

ich hätt da ein paar Fragen zu.

Den ersten Punkt 1) $hash->{ignoreredirects} finde ich etwas unglücklich umgesetzt. Sollte dieser Parameter auf 1 stehen, so wäre es meiner Ansicht nach dennoch angebracht, die neue URL aus dem Location-Header im Hash unter $hash->{url} bereitzustellen. Sonst muss man sich diese ja jedesmal aus dem Header extrahieren.

Desweiteren, warum ist der Hash-Wert "HTTPHEADER" jetzt plötzlich upper case anstatt lower case wie alle anderen?

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

ZitatDen ersten Punkt 1) $hash->{ignoreredirects} finde ich etwas unglücklich umgesetzt. Sollte dieser Parameter auf 1 stehen, so wäre es meiner Ansicht nach dennoch angebracht, die neue URL aus dem Location-Header im Hash unter $hash->{url} bereitzustellen. Sonst muss man sich diese ja jedesmal aus dem Header extrahieren.

Naja, HttpUtils hat die neue URL in diesem Fall auch noch nicht aus dem Header rausgelesen, d.h. da wird nicht viel gespart.
Und man kann es mit einem Regexp auch leicht aus $hash->{HTTPHEADER} extrahieren. Diese Moeglichkeit gab es bis vor kurzem gar nicht, und wurde trotzdem nicht vermisst.

ZitatDesweiteren, warum ist der Hash-Wert "HTTPHEADER" jetzt plötzlich upper case anstatt lower case wie alle anderen?
Ist meiner Unachtsamkeit geschuldet. Falls Stefan es auch klein haben will, kann ich es noch aendern.

StefanStrobel

Hallo,

ich möchte einer konsistenten Schreibweise nicht im Weg stehen und habe es in HTTPMOD jetzt so geändert, dass erst mal beide Schreibweisen für die Header-Variable verwendet werden.
(http://forum.fhem.de/index.php/topic,29471.msg222416.html#msg222416)

Da bisher keine Beschwerden von den Testern kamen, tendiere ich übrigens dazu, die neue Version von HTTPMOD demnächst einzuchecken.

Gruss
   Stefan

rudolfkoenig

Habe HttpUtils.pm geaendert und eingecheckt (jetzt mit httpheader)

Markus Bloch

Vielen Dank, werde ich im Wiki entsprechend nachpflegen, dann ist es wieder einheitlich.

Gruß

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)