summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-05-02 11:29:43 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-05-02 11:29:43 +0200
commitbe1e5dda23b5bac86898ac548ca1ecd2e6a3fb08 (patch)
tree2b6b13448ba9349ae8fd15e6a56aacc9dd0c7ac4
parent0ef0024e35fc51966bd68b84cf1eb7b8003c1209 (diff)
Public API documentation
-rwxr-xr-xlib/Travelynx.pm1
-rwxr-xr-xlib/Travelynx/Controller/Api.pm6
-rw-r--r--templates/account.html.ep69
-rw-r--r--templates/api_documentation.html.ep85
-rw-r--r--templates/landingpage.html.ep2
5 files changed, 96 insertions, 67 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 8e10896..0ded6bb 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -1719,6 +1719,7 @@ sub startup {
$r->get('/')->to('traveling#homepage');
$r->get('/about')->to('static#about');
+ $r->get('/api')->to('api#documentation');
$r->get('/impressum')->to('static#imprint');
$r->get('/imprint')->to('static#imprint');
$r->get('/api/v0/:user_action/:token')->to('api#get_v0');
diff --git a/lib/Travelynx/Controller/Api.pm b/lib/Travelynx/Controller/Api.pm
index a0b8e07..889a0e3 100755
--- a/lib/Travelynx/Controller/Api.pm
+++ b/lib/Travelynx/Controller/Api.pm
@@ -8,6 +8,12 @@ sub make_token {
return create_uuid_as_string(UUID_V4);
}
+sub documentation {
+ my ($self) = @_;
+
+ $self->render('api_documentation');
+}
+
sub get_v0 {
my ($self) = @_;
diff --git a/templates/account.html.ep b/templates/account.html.ep
index fc4387d..38ffecb 100644
--- a/templates/account.html.ep
+++ b/templates/account.html.ep
@@ -66,10 +66,10 @@
</div>
</div>
+<h2>API</h2>
% my $token = get_api_token();
<div class="row">
<div class="col s12">
- <h2>API</h2>
<p>
Die folgenden API-Token erlauben den passwortlosen automatisierten Zugriff auf
API-Endpunkte. Bitte umsichtig behandeln – sobald ein Token gesetzt
@@ -150,76 +150,13 @@
</div>
</div>
-% my $api_root = $self->url_for('/api/v1')->to_abs->scheme('https');
-<h3>Status</h3>
<div class="row">
<div class="col s12">
- <p style="font-family: Monospace;">
- % if ($token->{status}) {
- curl <%= $api_root %>/status/<%= $acc->{id} %>-<%= $token->{status} // 'TOKEN' %>
- % }
- % else {
- curl <%= $api_root %>/status/TOKEN
- % }
- </p>
- <p>
- Beispiel / Layout:
- </p>
- <p style="font-family: Monospace;">
- {<br/>
- "deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)<br/>
- "checkedIn" : true / false,<br/>
- "fromStation" : { (letzter Checkin)<br/>
- "name" : "Essen Hbf",<br/>
- "ds100" : "EE",<br/>
- "uic" : 8000098,<br/>
- "latitude" : 51.451355,<br/>
- "longitude" : 7.014793,<br/>
- "scheduledTime": 1556083680,<br/>
- "realTime": 1556083680,<br/>
- },<br/>
- "fromStation" : { (zugehöriger Checkout. Wenn noch nicht eingetragen, sind alle Felder null)<br/>
- "name" : "Essen Stadtwald",<br/>
- "ds100" : "EESA",<br/>
- "uic" : 8001896,<br/>
- "latitude" : 51.422853,<br/>
- "longitude" : 7.023296,<br/>
- "scheduledTime": 1556083980, (ggf. null)<br/>
- "realTime": 1556083980, (ggf. null)<br/>
- },<br/>
- "train" : {<br/>
- "type" : "S", (aktueller / letzter Zugtyp)<br/>
- "line" : "6", (Linie als String, nicht immer numerisch, ggf. null)<br/>
- "no" : "30634", (Zugnummer als String)<br/>
- "id" : "7512500863736016593", (IRIS-spezifische Zug-ID)<br/>
- },<br/>
- "actionTime" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)<br/>
- }
- </p>
- <p>
- Im Fehlerfall: <span style="font-family: Monospace;">{ "error" : "Begründung" }</span>
- </p>
- </div>
-</div>
-<!--
-<h3>History</h3>
-<div class="row">
- <div class="col s12">
- <p>
- Coming soon.
- </p>
+ <a href="/api">Dokumentation</a>
</div>
</div>
-<h3>Travel</h3>
-<div class="row">
- <div class="col s12">
- <p>
- Ein- und Auschecken per API. Coming soon.
- </p>
- </div>
-</div>
--->
+
<h2>Export</h2>
<div class="row">
diff --git a/templates/api_documentation.html.ep b/templates/api_documentation.html.ep
new file mode 100644
index 0000000..dd59be6
--- /dev/null
+++ b/templates/api_documentation.html.ep
@@ -0,0 +1,85 @@
+% my $api_root = $self->url_for('/api/v1')->to_abs->scheme('https');
+% my $token = {};
+% my $uid;
+% if (is_user_authenticated()) {
+ % $uid = current_user()->{id};
+ % $token = get_api_token();
+% }
+
+<h1>API</h1>
+
+<div class="row">
+ <div class="col s12">
+ Die folgenden API-Endpunkte werden aktuell unterstützt.
+ </div>
+</div>
+
+<h2>Status</h2>
+<div class="row">
+ <div class="col s12">
+ <p style="font-family: Monospace;">
+ % if ($token->{status}) {
+ curl <%= $api_root %>/status/<%= $uid %>-<%= $token->{status} // 'TOKEN' %>
+ % }
+ % else {
+ curl <%= $api_root %>/status/TOKEN
+ % }
+ </p>
+ <p>
+ Beispiel / Layout:
+ </p>
+ <p style="font-family: Monospace;">
+ {<br/>
+ "deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)<br/>
+ "checkedIn" : true / false,<br/>
+ "fromStation" : { (letzter Checkin)<br/>
+ "name" : "Essen Hbf",<br/>
+ "ds100" : "EE",<br/>
+ "uic" : 8000098,<br/>
+ "latitude" : 51.451355,<br/>
+ "longitude" : 7.014793,<br/>
+ "scheduledTime": 1556083680,<br/>
+ "realTime": 1556083680,<br/>
+ },<br/>
+ "fromStation" : { (zugehöriger Checkout. Wenn noch nicht eingetragen, sind alle Felder null)<br/>
+ "name" : "Essen Stadtwald",<br/>
+ "ds100" : "EESA",<br/>
+ "uic" : 8001896,<br/>
+ "latitude" : 51.422853,<br/>
+ "longitude" : 7.023296,<br/>
+ "scheduledTime": 1556083980, (ggf. null)<br/>
+ "realTime": 1556083980, (ggf. null)<br/>
+ },<br/>
+ "train" : {<br/>
+ "type" : "S", (aktueller / letzter Zugtyp)<br/>
+ "line" : "6", (Linie als String, nicht immer numerisch, ggf. null)<br/>
+ "no" : "30634", (Zugnummer als String)<br/>
+ "id" : "7512500863736016593", (IRIS-spezifische Zug-ID)<br/>
+ },<br/>
+ "actionTime" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)<br/>
+ }
+ </p>
+ <p>
+ Im Fehlerfall: <span style="font-family: Monospace;">{ "error" : "Begründung" }</span>
+ </p>
+ </div>
+</div>
+<!--
+<h3>History</h3>
+<div class="row">
+ <div class="col s12">
+ <p>
+ Coming soon.
+ </p>
+ </div>
+</div>
+
+<h3>Travel</h3>
+<div class="row">
+ <div class="col s12">
+ <p>
+ Ein- und Auschecken per API. Coming soon.
+ </p>
+ </div>
+</div>
+-->
diff --git a/templates/landingpage.html.ep b/templates/landingpage.html.ep
index 0f293d9..2d531fc 100644
--- a/templates/landingpage.html.ep
+++ b/templates/landingpage.html.ep
@@ -95,7 +95,7 @@
<ul>
<li>Protokoll von Fahrplan- und Echtzeitdaten an Start- und
Zielbahnhof</li>
- <li>API zum automatisierten Auslesen des aktuellen Status</li>
+ <li><a href="/api">API</a> zum automatisierten Auslesen des aktuellen Status</li>
<li>Statistiken über Reisezeiten und Verspätungen</li>
</ul>
</p>