#!/usr/bin/env bash

brt_speed() {
  brt_require curl
  brt_info "Running download speed test..."

  local url="https://speed.cloudflare.com/__down?bytes=10000000"
  local tmp
  tmp=$(mktemp)

  local start end elapsed bytes speed
  start=$(date +%s)
  curl -fsSL -o "$tmp" "$url" 2>/dev/null || {
    url="https://proof.ovh.net/files/1Mb.dat"
    curl -fsSL -o "$tmp" "$url"
  }
  end=$(date +%s)
  elapsed=$(( end - start ))
  [[ "$elapsed" -eq 0 ]] && elapsed=1
  bytes=$(wc -c < "$tmp" | tr -d ' ')
  rm -f "$tmp"

  speed=$(awk "BEGIN { printf \"%.2f\", ($bytes * 8) / ($elapsed * 1000000) }")
  local mbps
  mbps=$(awk "BEGIN { printf \"%.2f\", $bytes / ($elapsed * 1048576) }")

  brt_ok "Downloaded $(numfmt --to=iec "$bytes" 2>/dev/null || echo "${bytes} bytes") in ${elapsed}s"
  echo "  Speed: ${mbps} MB/s (${speed} Mbps)"
}
