<?php
require __DIR__ . '/../vendor/autoload.php';

use Nesk\Puphpeteer\Puppeteer;

if (PHP_SAPI !== 'cli' || $argc < 2) {
    echo "Uso:\n  php rastreo.php <NúmeroDeGuía>\n";
    exit(1);
}

$guia = $argv[1];

// 1) Lanzamos Chromium headless
$puppeteer = new Puppeteer([
    'headless' => true,
    'args'     => ['--no-sandbox', '--disable-setuid-sandbox'],
]);

$browser = $puppeteer->launch();
$page    = $browser->newPage();

// 2) Navegamos a la URL de rastreo con la guía cifrada en la ruta
$url = 'https://www3.interrapidisimo.com:8082/SiguetuEnvio/shipment/' . rawurlencode($guia);
$page->goto($url, ['waitUntil' => 'networkidle2']);

// 3) Disparamos la petición al API “ObtenerRastreoGuiasClientePost”
$page->evaluate(
    <<<JS
  // Esto replica la llamada que hace el front:
  fetch('/ApiServInter/api/Mensajeria/ObtenerRastreoGuiasClientePost', {
    method: 'POST',
    headers: {
      'accept': 'text/json',
      'content-type': 'text/json',
      // el idkey se genera en el front, pero Puppeteer ya trae todas las cookies y tokens
    },
    body: JSON.stringify({
      EncriptaAes: true,
      IdOpcion: 0,
      NumeroGuia: '$guia',
      NumeroTelefono: null
    })
  });
JS
);

// 4) Esperamos a que llegue la respuesta JSON del API
$response = $page->waitForResponse(function ($res) {
    return strpos($res->url(), '/ObtenerRastreoGuiasClientePost') !== false;
});

// 5) La volcamos por pantalla
echo $response->text(), "\n";

$browser->close();
