2019-05-05 16:09:11 +00:00
|
|
|
|
% if (my $invalid = stash('invalid')) {
|
|
|
|
|
%= include '_invalid_input', invalid => $invalid
|
|
|
|
|
% }
|
|
|
|
|
|
|
|
|
|
<h1>Web Hooks</h1>
|
|
|
|
|
|
2019-05-14 18:05:45 +00:00
|
|
|
|
% if (stash('new_hook') and $hook->{enabled}) {
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col s12">
|
|
|
|
|
% if ($hook->{errored}) {
|
2019-05-16 14:10:53 +00:00
|
|
|
|
<div class="card caution-color">
|
2019-05-14 18:05:45 +00:00
|
|
|
|
<div class="card-content white-text">
|
|
|
|
|
<span class="card-title">Web-Hook fehlerhaft</span>
|
|
|
|
|
<p><%= $hook->{output} %></p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
% }
|
|
|
|
|
% else {
|
2019-05-16 14:10:53 +00:00
|
|
|
|
<div class="card success-color">
|
2019-05-14 18:05:45 +00:00
|
|
|
|
<div class="card-content white-text">
|
|
|
|
|
<span class="card-title">Web-Hook erfolgreich getestet</span>
|
|
|
|
|
<p><%= $hook->{output} %></p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
% }
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
% }
|
|
|
|
|
|
2019-05-05 16:09:11 +00:00
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col s12">
|
|
|
|
|
<p>
|
2019-05-06 14:59:48 +00:00
|
|
|
|
Die im Web Hook konfigurierte URL wird bei Änderungen des aktuellen
|
|
|
|
|
Reisestatus (z.B. Checkin oder Ankunft am Ziel) aufgerufen. Falls ein
|
|
|
|
|
Token eingetragen ist, wird er als Bearer Token verwendet.
|
2019-05-05 16:09:11 +00:00
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
%= form_for '/account/hooks' => (method => 'POST') => begin
|
|
|
|
|
%= csrf_field
|
|
|
|
|
<div class="col s12 center-align">
|
|
|
|
|
<label>
|
|
|
|
|
%= check_box enabled => 1
|
|
|
|
|
<span>Aktiv</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="input-field col s12">
|
|
|
|
|
<i class="material-icons prefix">link</i>
|
2019-05-06 14:59:48 +00:00
|
|
|
|
%= text_field 'url', id => 'url', class => 'validate', pattern => 'https?://.+', maxlength => 1000
|
2019-05-05 16:09:11 +00:00
|
|
|
|
<label for="url">URL</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="input-field col s12">
|
|
|
|
|
<i class="material-icons prefix">lock</i>
|
|
|
|
|
%= text_field 'token', id => 'token', class => 'validate', maxlength => 250
|
|
|
|
|
<label for="token">Token</label>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col s12 center-align">
|
|
|
|
|
<button class="btn waves-effect waves-light" type="submit" name="action" value="save">
|
|
|
|
|
Speichern
|
|
|
|
|
<i class="material-icons right">send</i>
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
%= end
|
2019-05-14 18:05:45 +00:00
|
|
|
|
<div class="col s12" style="margin-top: 1em; margin-bottom: 2em;">
|
|
|
|
|
% if ($hook->{latest_run}->epoch) {
|
|
|
|
|
Zuletzt ausgeführt <%= $hook->{latest_run}->strftime('am %d.%m.%Y um %H:%M:%S') %><br/>
|
|
|
|
|
% if ($hook->{errored}) {
|
|
|
|
|
<i class="material-icons left">error</i>
|
|
|
|
|
Status: <%= $hook->{output} %>
|
|
|
|
|
% }
|
|
|
|
|
% else {
|
|
|
|
|
<i class="material-icons left">check</i>
|
|
|
|
|
Server-Antwort: <%= $hook->{output} %>
|
|
|
|
|
% }
|
|
|
|
|
% }
|
|
|
|
|
% else {
|
|
|
|
|
Noch nicht ausgeführt.
|
|
|
|
|
% }
|
|
|
|
|
</div>
|
2019-05-06 14:59:48 +00:00
|
|
|
|
<div class="col s12">
|
|
|
|
|
<p>Events werden als JSON POST mit folgender Payload übertragen.</p>
|
|
|
|
|
<p style="font-family: Monospace;">
|
|
|
|
|
{<br/>
|
|
|
|
|
"reason" : "Grund für den Webhook-Aufruf",<br/>
|
|
|
|
|
"status" : { <a href="/api">Aktueller Nutzerstatus</a> }<br/>
|
|
|
|
|
}<br/>
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Gültige Werte für reason sind derzeit:
|
|
|
|
|
<ul>
|
|
|
|
|
<li><b>ping</b> (nach jeder gespeicherten Änderung in diesem Formular)</li>
|
|
|
|
|
<li><b>checkin</b> (in einen Zug eingecheckt – Zielstation ist noch nicht bekannt)</li>
|
2023-06-18 06:38:55 +00:00
|
|
|
|
<li><b>update</b> (eingecheckt und Ziel/Kommentar/Sichtbarkeit geändert)</li>
|
2019-05-06 14:59:48 +00:00
|
|
|
|
<li><b>checkout</b> (aus einem Zug ausgecheckt)</li>
|
|
|
|
|
<li><b>undo</b> (checkin oder checkout wurde rückgängig gemacht)</li>
|
|
|
|
|
</ul>
|
|
|
|
|
Falls der Zug das Ziel bei der Zielwahl schon erreicht hat, wird ohne
|
|
|
|
|
<b>update</b> direkt ein <b>checkout</b> abgeschickt.
|
|
|
|
|
</p>
|
2020-07-11 21:41:35 +00:00
|
|
|
|
</div>
|
2019-05-05 16:09:11 +00:00
|
|
|
|
</div>
|