HTTPResponse

Ein HTTPResponse-Objekt enhält Informationen über die HTTP-Antwort über die das Anzeige-Template ausgeliefert werden wird und ist zugänglich als globals.response. Das Anzeige-Template kann die Attribute diese Objekts ändern, um die Antwort zu beinflussen. Die Attribute sind:

statusInteger

Der HTTP-Statuscode

headersDictionary(String ➝ String)

Die HTTP-Header, die bei der Antwort geschickt werden (Groß-/Kleinschreibung wird dabei bei den Schlüsseln ignoriert). Set-Cookie Header werden nur in das HTTPResponse Objekt geschrieben, wenn eine gültige App-ID vorliegt. In diesem Fall wird der Cookie-Name mit dem Präfix la-{appId}- ergänzt ({appId} stellt dabei die ID der aktuellen App dar. Beispiel: la-661519498060b8918021d884-). Dieser Präfix wird beim nächsten Request wieder entfernt, bevor das Cookie an die LivingAPI weitergereicht wird. Mit diesem Mechanismus wird sichergestellt, dass Cookies von einer App nur an diese durchgereicht werden und Inhalte nicht von anderen Apps ausgelesen werden können.

send_file(file)Methode(File) ➝ None

Mit dieser Methode können Sie die LivingAPI anweisen, statt der Ausgabe, die Ihr Anzeige-Template erzeugt, ein File-Objekt auszuliefern.

Wenn Sie unter Uploads schützen? konfiguriert haben, daß nur Benutzer mit Rechten an der App Dateien herunterladen können, können Sie in einem Anzeige-Template Ihren eigenen Zugriffsschutz implementieren und dann mittels send_file() die gewünschte Datei ausliefern.

send_file() kann mehrmal aufgerufen werden. Das Argument muß ein File-Objekt sein. Alle übergebenen File-Objekte werden in einer Liste gesammelt. Ist am Ende des Anzeige-Templates diese Liste leer, so wird die Ausgabe des Anzeige-Templates ausgeliefert. Enthält die Liste ein File-Objekt, so wird dieses File ausgeliefert. Enthält die Liste mehrere Files, so werden diese Files in ein ZIP-Archiv verpackt, und dieses ZIP-Archiv wird ausgeliefert.

Werden mittels send_file() Dateien ausgeliefert, so werden trotzdem die in headers gesetzten Header berücksichtigt, mit Ausnahme des "Content-Type"-Headers, der automatisch auf den richtigen Datei-Typ gesetzt wird und auch nicht verändert werden kann. Außerdem wird der "Content-Disposition"-Header gesetzt um dem Browser den Original-Dateinamen bekannt zu machen.

clear_files()Methode() ➝ None

Leert die Liste der zu auszuliefernden Files, d.h. danach wird wieder die Ausgabe des Anzeige-Templates ausgeliefert.

add_cookie(name, value, expires, max_age, secure, http_only, path, same_site)Methode(String, String, Datum, Integer, Bool, Bool, String, String) ➝ None

Fügt einen Set-Cookie Header in die Response hinzu. name und value müssen angegeben werden, für die restlichen Parameter gibt es Default-Werte. expires (default None) ist der Zeitstempel wann das Cookie abläuft. max_age (default None) gibt die Lebensdauer des Cookies in Sekunden an. secure (default True) sorgt dafür, dass das Cookie nur in verschlüsselten https-Requests vom Browser an den Server geschickt wird. http_only (default False) steuert, ob ein Cookie per JavaScript abgerufen werden kann. path (default None) gibt einen URL-Pfad an, der in der angeforderten URL existieren muss, um das Cookie zu senden. same_site (default Strict) steuert, ob/wann Cookies mit Cross-Site-Anfragen gesendet werden. Mögliche Werte sind Strict, Lax und None.

Beispiele

Ein Redirect läßt sich mit status und headers beispielsweise folgendermaßen implementieren:

<?code globals.response.status = 303?>
<?code globals.response.headers["Location"] = "http://www.example.org/"?>

Sie können mit folgendem Code Ihr eigenes Account-Icon ausliefern:

<?code globals.response.send_file(globals.user.image)?>