80 lines
2.1 KiB
Bash
Executable File
80 lines
2.1 KiB
Bash
Executable File
|
|
#!/usr/bin/env bash
|
|
# Pull trader reset times (PvP & PvE) from Tarkov.dev and save as local JSON.
|
|
# Writes: /var/www/EFT_COMPANION/public_html/traders_pvp.json, /var/www/EFT_COMPANION/public_html/traders_pve.json
|
|
# Logs: /var/log/eft_traders_pull.log
|
|
|
|
set -euo pipefail
|
|
umask 022
|
|
|
|
OUTDIR="/var/www/EFT_COMPANION/public_html/"
|
|
URL="https://api.tarkov.dev/graphql"
|
|
LOG="/var/log/eft_traders_pull.log"
|
|
|
|
# Ensure log file exists and is writable (no sudo; assume root or correct perms)
|
|
mkdir -p /var/log
|
|
touch "$LOG"
|
|
|
|
log() { echo "[$(date -Is)] $*" | tee -a "$LOG"; }
|
|
|
|
# Compact, single-line GraphQL bodies (avoids quoting/heredoc pitfalls)
|
|
Q_PVP='{"query":"{ traders(gameMode: regular) { id name resetTime imageLink } }"}'
|
|
Q_PVE='{"query":"{ traders(gameMode: pve) { id name resetTime imageLink } }"}'
|
|
|
|
mkdir -p "$OUTDIR"
|
|
|
|
tmp_pvp="$(mktemp)"
|
|
tmp_pve="$(mktemp)"
|
|
raw_pvp="$(mktemp)"
|
|
raw_pve="$(mktemp)"
|
|
|
|
cleanup() {
|
|
rm -f "$tmp_pvp" "$tmp_pve" "$raw_pvp" "$raw_pve"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
log "Starting trader pulls…"
|
|
|
|
# ---- PvP ----
|
|
if curl -fSs -X POST "$URL" \
|
|
-H "Content-Type: application/json" \
|
|
--data "$Q_PVP" -o "$raw_pvp"
|
|
then
|
|
if jq -e '.errors' "$raw_pvp" >/dev/null 2>&1; then
|
|
log "ERROR: PvP GraphQL returned errors:"
|
|
jq '.errors' "$raw_pvp" | tee -a "$LOG"
|
|
exit 1
|
|
fi
|
|
jq '.data.traders' "$raw_pvp" > "$tmp_pvp"
|
|
else
|
|
rc=$?
|
|
log "ERROR: curl PvP request failed (exit $rc). Raw (if any):"
|
|
cat "$raw_pvp" | tee -a "$LOG" || true
|
|
exit 1
|
|
fi
|
|
|
|
# ---- PvE ----
|
|
if curl -fSs -X POST "$URL" \
|
|
-H "Content-Type: application/json" \
|
|
--data "$Q_PVE" -o "$raw_pve"
|
|
then
|
|
if jq -e '.errors' "$raw_pve" >/dev/null 2>&1; then
|
|
log "ERROR: PvE GraphQL returned errors:"
|
|
jq '.errors' "$raw_pve" | tee -a "$LOG"
|
|
exit 1
|
|
fi
|
|
jq '.data.traders' "$raw_pve" > "$tmp_pve"
|
|
else
|
|
rc=$?
|
|
log "ERROR: curl PvE request failed (exit $rc). Raw (if any):"
|
|
cat "$raw_pve" | tee -a "$LOG" || true
|
|
exit 1
|
|
fi
|
|
|
|
# Atomic move into place
|
|
mv "$tmp_pvp" "$OUTDIR/traders_pvp.json"
|
|
mv "$tmp_pve" "$OUTDIR/traders_pve.json"
|
|
chmod 644 "$OUTDIR/traders_pvp.json" "$OUTDIR/traders_pve.json"
|
|
|
|
log "Success: wrote $OUTDIR/traders_pvp.json and $OUTDIR/traders_pve.json"
|