#!/bin/bash

BASE_URL="https://dl.prefortress.com"
DOWNLOAD_DIR="./pf2_backup"
RATE_LIMIT="2m"

# Create base dir
mkdir -p "$DOWNLOAD_DIR"

function fetch_json() {
    curl -s "${1}/?json"
}

function download_dir() {
    local url="$1"
    local rel_path="$2"
    local json
    json=$(fetch_json "$url")

    echo "$json" | jq -c '.paths[]' | while read -r entry; do
        name=$(echo "$entry" | jq -r '.name')
        type=$(echo "$entry" | jq -r '.path_type')

        if [[ "$type" == "Dir" ]]; then
            mkdir -p "$DOWNLOAD_DIR/$rel_path/$name"
            download_dir "$url/$name" "$rel_path/$name"
        elif [[ "$type" == "File" ]]; then
            full_url="$url/$name"
            target_path="$DOWNLOAD_DIR/$rel_path/$name"
            echo "Downloading $full_url -> $target_path"
            curl --limit-rate "$RATE_LIMIT" -s -o "$target_path" "$full_url"
        fi
    done
}

download_dir "$BASE_URL" ""
