diff options
author | Daniel Friesel <derf@finalrewind.org> | 2019-05-02 11:29:43 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2019-05-02 11:29:43 +0200 |
commit | be1e5dda23b5bac86898ac548ca1ecd2e6a3fb08 (patch) | |
tree | 2b6b13448ba9349ae8fd15e6a56aacc9dd0c7ac4 | |
parent | 0ef0024e35fc51966bd68b84cf1eb7b8003c1209 (diff) |
Public API documentation
-rwxr-xr-x | lib/Travelynx.pm | 1 | ||||
-rwxr-xr-x | lib/Travelynx/Controller/Api.pm | 6 | ||||
-rw-r--r-- | templates/account.html.ep | 69 | ||||
-rw-r--r-- | templates/api_documentation.html.ep | 85 | ||||
-rw-r--r-- | templates/landingpage.html.ep | 2 |
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> |