From be1e5dda23b5bac86898ac548ca1ecd2e6a3fb08 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 2 May 2019 11:29:43 +0200 Subject: Public API documentation --- lib/Travelynx.pm | 1 + lib/Travelynx/Controller/Api.pm | 6 +++ templates/account.html.ep | 69 ++---------------------------- templates/api_documentation.html.ep | 85 +++++++++++++++++++++++++++++++++++++ templates/landingpage.html.ep | 2 +- 5 files changed, 96 insertions(+), 67 deletions(-) create mode 100644 templates/api_documentation.html.ep 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 @@ +

API

% my $token = get_api_token();
-

API

Die folgenden API-Token erlauben den passwortlosen automatisierten Zugriff auf API-Endpunkte. Bitte umsichtig behandeln – sobald ein Token gesetzt @@ -150,76 +150,13 @@

-% my $api_root = $self->url_for('/api/v1')->to_abs->scheme('https'); -

Status

-

- % if ($token->{status}) { - curl <%= $api_root %>/status/<%= $acc->{id} %>-<%= $token->{status} // 'TOKEN' %> - % } - % else { - curl <%= $api_root %>/status/TOKEN - % } -

-

- Beispiel / Layout: -

-

- {
- "deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)
- "checkedIn" : true / false,
- "fromStation" : { (letzter Checkin)
- "name" : "Essen Hbf",
- "ds100" : "EE",
- "uic" : 8000098,
- "latitude" : 51.451355,
- "longitude" : 7.014793,
- "scheduledTime": 1556083680,
- "realTime": 1556083680,
- },
- "fromStation" : { (zugehöriger Checkout. Wenn noch nicht eingetragen, sind alle Felder null)
- "name" : "Essen Stadtwald",
- "ds100" : "EESA",
- "uic" : 8001896,
- "latitude" : 51.422853,
- "longitude" : 7.023296,
- "scheduledTime": 1556083980, (ggf. null)
- "realTime": 1556083980, (ggf. null)
- },
- "train" : {
- "type" : "S", (aktueller / letzter Zugtyp)
- "line" : "6", (Linie als String, nicht immer numerisch, ggf. null)
- "no" : "30634", (Zugnummer als String)
- "id" : "7512500863736016593", (IRIS-spezifische Zug-ID)
- },
- "actionTime" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)
- } -

-

- Im Fehlerfall: { "error" : "Begründung" } -

-
-
- +

Export

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(); +% } + +

API

+ +
+
+ Die folgenden API-Endpunkte werden aktuell unterstützt. +
+
+ +

Status

+
+
+

+ % if ($token->{status}) { + curl <%= $api_root %>/status/<%= $uid %>-<%= $token->{status} // 'TOKEN' %> + % } + % else { + curl <%= $api_root %>/status/TOKEN + % } +

+

+ Beispiel / Layout: +

+

+ {
+ "deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)
+ "checkedIn" : true / false,
+ "fromStation" : { (letzter Checkin)
+ "name" : "Essen Hbf",
+ "ds100" : "EE",
+ "uic" : 8000098,
+ "latitude" : 51.451355,
+ "longitude" : 7.014793,
+ "scheduledTime": 1556083680,
+ "realTime": 1556083680,
+ },
+ "fromStation" : { (zugehöriger Checkout. Wenn noch nicht eingetragen, sind alle Felder null)
+ "name" : "Essen Stadtwald",
+ "ds100" : "EESA",
+ "uic" : 8001896,
+ "latitude" : 51.422853,
+ "longitude" : 7.023296,
+ "scheduledTime": 1556083980, (ggf. null)
+ "realTime": 1556083980, (ggf. null)
+ },
+ "train" : {
+ "type" : "S", (aktueller / letzter Zugtyp)
+ "line" : "6", (Linie als String, nicht immer numerisch, ggf. null)
+ "no" : "30634", (Zugnummer als String)
+ "id" : "7512500863736016593", (IRIS-spezifische Zug-ID)
+ },
+ "actionTime" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)
+ } +

+

+ Im Fehlerfall: { "error" : "Begründung" } +

+
+
+ 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 @@

-- cgit v1.2.3