From 45845964a3028b8baf35e447e3fdb4c67e39eec0 Mon Sep 17 00:00:00 2001
From: Birte Kristina Friesel <derf@finalrewind.org>
Date: Tue, 5 Nov 2024 21:38:51 +0100
Subject: IRIS, HAFAS: Pass version=raw to obtain raw serialized Perl objects

---
 lib/DBInfoscreen/Controller/Stationboard.pm | 3 +++
 templates/layouts/app.html.ep               | 8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm
index 0e1c6aa..8c8365f 100644
--- a/lib/DBInfoscreen/Controller/Stationboard.pm
+++ b/lib/DBInfoscreen/Controller/Stationboard.pm
@@ -1977,6 +1977,9 @@ sub handle_result {
 				);
 				return;
 			}
+			elsif ( $apiver eq 'raw' ) {
+				push( @departures, $result );
+			}
 			else {    # apiver == 3
 				if ( $result->isa('Travel::Status::DE::IRIS::Result') ) {
 					my ( $delay_arr, $delay_dep, $sched_arr, $sched_dep );
diff --git a/templates/layouts/app.html.ep b/templates/layouts/app.html.ep
index ee8a2dd..ce82662 100644
--- a/templates/layouts/app.html.ep
+++ b/templates/layouts/app.html.ep
@@ -281,17 +281,21 @@ Bitte eine Station aus der Liste auswählen</div>
         <li>Die Parameter <span style="font-family: monospace;">mode=json&amp;version=3</span>
           (alternativ <span style="font-family:
           monospace;">https://dbf.finalrewind.org/Bahnhofsname.json?version=3</span>)
-          bieten ein JSON-IRIS-Interface. Die route-Elemente können zusätzlich
+          bieten ein JSON-Interface für IRIS- und HAFAS-Abfahrten.
+          Die route-Elemente können zusätzlich
           die Felder "isAdditional" oder "isCancelled" enthalten, der Rest sollte
           selbsterklärend sein. Im Fehlerfall fehlt das "departures"-Element,
           stattdessen wird ein "error"-Element mit Fehlermeldung zurückgegeben.
           Bitte maximal 30 Anfragen pro Minute und insbesondere nur eine Anfrage
           pro Station und Minute – eine höhere Auflösung haben die Backenddaten
           ohnehin nicht.</li>
-        <li>Ein JSON-Interface für Zugdetails ist in Arbeit.</li>
         <li>Mit <span style="font-family: monospace;">limit</span> kann die Anzahl der
           angezeigten / im JSON enthaltenen Abfahrten eingeschränkt werden, z.B.
           <span style="font-family: monospace;">limit=10</span> für die ersten zehn.</li>
+        <li><span style="font-family: monospace;">mode=json&amp;version=raw</span>
+          erlaubt direkten Zugriff auf die serialisierten Travel::Status::DE::{EFA,HAFAS,IRIS}-Objekte.
+          Hier gibt es keine stabile API.</li>
+        <li>Zugdetails sind ebenfalls per JSON verfügbar und ebenso ohne stabile API.</li>
         <li>Dieser Dienst ist Open Source-Software und kann leicht auf eigenen Servern
           <a href="https://github.com/derf/db-fakedisplay/blob/master/README.md">installiert</a>
           werden. Automatisierte Crawler, die mehrere Dutzend Stationen pro Minute
-- 
cgit v1.2.3