#!/bin/bash
# Manitas CLI — cliente genérico para el servidor Manitas.
# Configura la IP con: export MANITAS_HOST=100.x.x.x
# Uso: manitas shot [salida.jpg] | click X Y | type "texto" | ...
HOST="${MANITAS_HOST:-127.0.0.1}"
PORT="${MANITAS_PORT:-18080}"
BASE="http://$HOST:$PORT"

api() { # GET path
  curl -s -m 30 "$BASE/$1"
}
shot() { # GET binario -> archivo
  local out="${1:-shot.jpg}"
  curl -s -m 60 "$BASE/shot?w=960$2" -o "$out" && echo "guardado: $out"
}

case "$1" in
  shot)  shot "$2" ;;
  tv)    shot "${2:-tv.jpg}" "&display=2" ;;
  click) curl -s -m 30 -X POST "$BASE/click" -H 'Content-Type: application/json' -d "{\"x\":$2,\"y\":$3}"; echo ;;
  clickshot) curl -s -m 60 -X POST "$BASE/clickshot" -H 'Content-Type: application/json' -d "{\"x\":$2,\"y\":$3}" -o "${4:-clickshot.jpg}" && echo "guardado: ${4:-clickshot.jpg}" ;;
  dblclick) curl -s -m 30 -X POST "$BASE/dblclick" -H 'Content-Type: application/json' -d "{\"x\":$2,\"y\":$3}"; echo ;;
  rclick) curl -s -m 30 -X POST "$BASE/rclick" -H 'Content-Type: application/json' -d "{\"x\":$2,\"y\":$3}"; echo ;;
  move)  curl -s -m 30 -X POST "$BASE/move" -H 'Content-Type: application/json' -d "{\"x\":$2,\"y\":$3}"; echo ;;
  drag)  curl -s -m 30 -X POST "$BASE/drag" -H 'Content-Type: application/json' -d "{\"x1\":$2,\"y1\":$3,\"x2\":$4,\"y2\":$5}"; echo ;;
  type)  TXT=$(printf '%s' "$2" | python3 -c "import json,sys;print(json.dumps(sys.stdin.read()))"); curl -s -m 30 -X POST "$BASE/type" -H 'Content-Type: application/json' -d "{\"text\":$TXT}"; echo ;;
  key)   curl -s -m 30 -X POST "$BASE/key" -H 'Content-Type: application/json' -d "{\"key\":\"$2\"}"; echo ;;
  hotkey) curl -s -m 30 -X POST "$BASE/hotkey" -H 'Content-Type: application/json' -d "{\"keys\":\"$2\"}"; echo ;;
  scroll) curl -s -m 30 -X POST "$BASE/scroll" -H 'Content-Type: application/json' -d "{\"dy\":$2}"; echo ;;
  mouse) api mouse; echo ;;
  clipboard)
    if [ -z "$2" ]; then api clipboard; echo
    else TXT=$(printf '%s' "$2" | python3 -c "import json,sys;print(json.dumps(sys.stdin.read()))"); curl -s -m 30 -X POST "$BASE/clipboard" -H 'Content-Type: application/json' -d "{\"text\":$TXT}"; echo; fi ;;
  apps)   api apps; echo ;;
  launch) curl -s -m 30 -X POST "$BASE/launch" -H 'Content-Type: application/json' -d "{\"app\":\"$2\"}"; echo ;;
  focus)  curl -s -m 30 -X POST "$BASE/focus" -H 'Content-Type: application/json' -d "{\"app\":\"$2\"}"; echo ;;
  ping)   api ping; echo ;;
  *) echo "Uso: MANITAS_HOST=100.x.x.x manitas shot|tv|click X Y|clickshot X Y [jpg]|dblclick X Y|rclick X Y|move X Y|drag x1 y1 x2 y2|type \"txt\"|key return|hotkey cmd-c|scroll -5|mouse|clipboard [txt]|apps|launch \"App\"|focus \"App\"|ping"; exit 1 ;;
esac
