#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
CLIENT_DIR="$ROOT_DIR/client"
CLIENT_CFG="$CLIENT_DIR/config.yaml"
PLAINTEXT=${1:-"hello from script"}

# Build
echo "[script] Building client..."
(cd "$CLIENT_DIR" && go build ./...)

# Parse server_url from YAML
SERVER_URL=$(awk -F': ' '/^server_url:/ {gsub(/"/,"",$2); print $2}' "$CLIENT_CFG" || true)
if [[ -z "${SERVER_URL:-}" ]]; then
  echo "[script] Error: server_url not found in $CLIENT_CFG"
  exit 1
fi

# Compute base ping URL: scheme://authority/
AUTH="${SERVER_URL#*://}"
AUTH="${AUTH%%/*}"
SCHEME="${SERVER_URL%%://*}"
PING_URL="${SCHEME}://${AUTH}/"

# Wait for server to be reachable
READY=0
echo "[script] Waiting server ready at $PING_URL ..."
for i in $(seq 1 40); do
  if curl -sS --max-time 1 "$PING_URL" >/dev/null 2>&1; then
    READY=1
    break
  fi
  sleep 0.25
done
if [[ "$READY" -ne 1 ]]; then
  echo "[script] Error: server not reachable at $PING_URL (derived from $SERVER_URL)"
  exit 1
fi

# Send message via client
echo "[script] Sending message: len=${#PLAINTEXT}"
printf "%s" "$PLAINTEXT" | (cd "$CLIENT_DIR" && go run ./cmd/client --config ./config.yaml)
