AppStore-Scripts: generate_demo_routes.sh — 6 Routen quer durch DE für Reviewer-Account
Schreibt 6 öffentliche Pro-Routenvorschläge per /api/routes/suggest + /api/routes ans Reviewer-Konto: Hamburg Alster, Berlin Tiergarten, München Englischer Garten, Köln Stadtwald, Stuttgart Schlossgarten, Dresden Großer Garten. Login via interaktivem Prompt (read -s), Token nur im Skript-Memory. Benötigt curl + jq, Account muss 'pro' sein.
This commit is contained in:
parent
546386dcbd
commit
c599257657
1 changed files with 105 additions and 0 deletions
105
AppStore/scripts/generate_demo_routes.sh
Executable file
105
AppStore/scripts/generate_demo_routes.sh
Executable file
|
|
@ -0,0 +1,105 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Erzeugt 6 öffentliche Routen quer durch Deutschland für den Demo-Account
|
||||
# (z.B. reviewer@banyaro.app). Login wird interaktiv abgefragt; das Passwort
|
||||
# läuft nicht durchs Shell-History.
|
||||
#
|
||||
# Abhängigkeiten: curl, jq.
|
||||
# Voraussetzung: Account ist als 'pro' freigeschaltet (Routenvorschläge
|
||||
# sind Pro-Feature; sonst kommt 403 zurück).
|
||||
#
|
||||
# Aufruf:
|
||||
# ./AppStore/scripts/generate_demo_routes.sh
|
||||
|
||||
set -euo pipefail
|
||||
BASE="https://banyaro.app"
|
||||
|
||||
command -v jq >/dev/null || { echo "❌ jq fehlt (brew install jq)"; exit 1; }
|
||||
command -v curl >/dev/null || { echo "❌ curl fehlt"; exit 1; }
|
||||
|
||||
echo "📍 Reviewer-Demo-Routen: 6 öffentliche Routen quer durch Deutschland"
|
||||
echo ""
|
||||
read -r -p "E-Mail: " EMAIL
|
||||
read -r -s -p "Passwort: " PASS; echo ""
|
||||
echo ""
|
||||
|
||||
# ── 1. Login ──────────────────────────────────────────────────────
|
||||
LOGIN_RESP=$(curl -s -X POST "$BASE/api/auth/login" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$(jq -nc --arg e "$EMAIL" --arg p "$PASS" '{email:$e,password:$p}')")
|
||||
|
||||
TOKEN=$(echo "$LOGIN_RESP" | jq -r '.token // empty')
|
||||
if [ -z "$TOKEN" ]; then
|
||||
echo "❌ Login fehlgeschlagen:"
|
||||
echo "$LOGIN_RESP" | jq .
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Eingeloggt"
|
||||
|
||||
# ── 2. Hund-ID holen (erstes Tier am Account) ─────────────────────
|
||||
DOG_ID=$(curl -s "$BASE/api/dogs" -H "Authorization: Bearer $TOKEN" | jq -r '.[0].id // empty')
|
||||
if [ -z "$DOG_ID" ]; then
|
||||
echo "❌ Kein Hund am Account — leg erst einen an."; exit 1
|
||||
fi
|
||||
echo "✓ Hund-ID $DOG_ID gefunden"
|
||||
echo ""
|
||||
|
||||
# ── 3. Routen-Definitionen ────────────────────────────────────────
|
||||
# name | lat | lon | km | seed | is_public
|
||||
ROUTES=(
|
||||
"Hamburg — Alster-Rundweg|53.5594|9.9971|4|1|true"
|
||||
"Berlin — Tiergarten-Schleife|52.5145|13.3501|3|2|true"
|
||||
"München — Englischer Garten|48.1641|11.6053|5|3|true"
|
||||
"Köln — Stadtwald-Runde|50.9290|6.9094|4|4|true"
|
||||
"Stuttgart — Schlossgarten|48.7796|9.1822|3|5|true"
|
||||
"Dresden — Großer Garten|51.0354|13.7607|5|6|true"
|
||||
)
|
||||
|
||||
# ── 4. Pro Route: Vorschlag holen, dann speichern ─────────────────
|
||||
saved=0
|
||||
for entry in "${ROUTES[@]}"; do
|
||||
IFS='|' read -r name lat lon km seed pub <<< "$entry"
|
||||
printf "→ %-40s " "$name"
|
||||
|
||||
SUG=$(curl -s -X POST "$BASE/api/routes/suggest" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$(jq -nc --argjson la "$lat" --argjson lo "$lon" --argjson km "$km" --argjson sd "$seed" \
|
||||
'{lat:$la, lon:$lo, distance_km:$km, seed:$sd}')")
|
||||
|
||||
TRACK=$(echo "$SUG" | jq -c '.gps_track // empty')
|
||||
DIST=$( echo "$SUG" | jq -r '.distanz_km // empty')
|
||||
DUR=$( echo "$SUG" | jq -r '.dauer_min // empty')
|
||||
|
||||
if [ -z "$TRACK" ] || [ "$TRACK" = "null" ]; then
|
||||
echo "✗ ORS-Fehler:"
|
||||
echo "$SUG" | jq . | sed 's/^/ /'
|
||||
continue
|
||||
fi
|
||||
|
||||
BODY=$(jq -nc \
|
||||
--arg name "$name" \
|
||||
--argjson track "$TRACK" \
|
||||
--argjson dist "$DIST" \
|
||||
--argjson dur "$DUR" \
|
||||
--argjson dog "$DOG_ID" \
|
||||
--argjson pub "$pub" \
|
||||
'{name:$name, gps_track:$track, distanz_km:$dist, dauer_min:$dur, dog_ids:[$dog], is_public:$pub}')
|
||||
|
||||
SAVE=$(curl -s -X POST "$BASE/api/routes" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$BODY")
|
||||
|
||||
RID=$(echo "$SAVE" | jq -r '.id // empty')
|
||||
if [ -n "$RID" ] && [ "$RID" != "null" ]; then
|
||||
echo "✓ #$RID ($DIST km, $DUR min)"
|
||||
saved=$((saved + 1))
|
||||
else
|
||||
echo "✗ Speichern fehlgeschlagen:"
|
||||
echo "$SAVE" | jq . | sed 's/^/ /'
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Fertig: $saved von ${#ROUTES[@]} Routen gespeichert."
|
||||
Loading…
Add table
Add a link
Reference in a new issue