123456set -eu7out=$(cd "$(dirname "$0")" && pwd)8tmp=$(mktemp -d)9rec() { 10 slug=$(printf '%s' "$1" | sed 's#^/##; s#/#_#g')11 12 raw=$(mktemp "$tmp/headers.XXXXXX")13 code=014 if [ "${2:-}" = nobody ]; then15 curl -sS -D "$raw" -o /dev/null --max-filesize 1 "https://kepr.uk$1" || code=$?16 17 [ "$code" = 63 ] && code=018 else19 curl -sS -D "$raw" -o "$out/$slug.body" "https://kepr.uk$1" || code=$?20 fi21 if [ "$code" != 0 ] || [ ! -s "$raw" ]; then22 echo "$1: request failed (curl exit $code)" >&223 exit 124 fi25 { head -1 "$raw" | tr -d '\r'; grep -i -E '^(content-type|access-control-allow-origin|location|cache-control|content-disposition):' "$raw" | tr -d '\r' || true; } > "$out/$slug.headers"26 echo "$1 -> $(head -1 "$out/$slug.headers")"27}28for r in haven kepr koh nina peach-android; do29 rec /api/$r/releases/latest30 rec /api/$r/releases/history31 rec /$r/update-info32 rec /$r/meta33 rec /$r/releases/latest34 rec /$r/releases/latest/version.txt35 v=$(cat "$out/${r}_releases_latest_version.txt.body")36 rec /$r/releases/$v/checksums.txt37 p=$(sed 's/.*"platforms":{"\([^"]*\)".*/\1/' "$out/api_${r}_releases_latest.body")38 rec /$r/releases/$v/$p nobody39 rec /$r/releases/$v/$r-$p nobody40done41rec /api/koh/releases/latest42for p in linux-x86_64 macos-aarch64; do rec /api/koh/releases/2.1.0/$p nobody; done43rec /api/koh/releases/2.1.16/linux-x86_6444rec /api/peach-relay/releases/latest45rec /api/peach-relay/releases/history46rec /peach-relay/meta47rec /peach-relay/update-info48rec /api/nowhere/releases/latest