<?php
// scripts/install_qrcode_lib.php
// Uso: php scripts/install_qrcode_lib.php

$targets = [
  // pacote oficial "qrcode" (soldair)
  'https://cdn.jsdelivr.net/npm/qrcode@1.5.3/build/qrcode.js',
  'https://unpkg.com/qrcode@1.5.3/build/qrcode.js',
  // alternativas compatíveis (APIs diferentes; servem como plano B)
  'https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js',            // qrcodejs (DavidShim)
  'https://cdnjs.cloudflare.com/ajax/libs/qrcode-generator/1.4.4/qrcode.min.js',   // qrcode-generator
];

$dest = __DIR__ . '/../public/assets/js/qrcode.js';
@mkdir(dirname($dest), 0775, true);

function download($url) {
  echo "Baixando: $url\n";
  $ch = curl_init($url);
  curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS      => 5,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_SSL_VERIFYPEER => true,
  ]);
  $data = curl_exec($ch);
  $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  $err  = curl_error($ch);
  curl_close($ch);
  if ($data === false || $code >= 400) {
    throw new RuntimeException("Falha HTTP $code: $err");
  }
  return $data;
}

foreach ($targets as $url) {
  try {
    $js = download($url);

    // Normaliza: se vier minificado, só salvamos como qrcode.js mesmo.
    file_put_contents($dest, $js);
    $bytes = filesize($dest);

    echo "✅ Salvo em {$dest} ({$bytes} bytes)\n";
    echo "Pronto! Ajuste seu front para carregar: /assets/js/qrcode.js\n";
    exit(0);
  } catch (Throwable $e) {
    echo "❌ Falhou ($url): " . $e->getMessage() . "\n";
  }
}

echo "Não foi possível baixar nenhuma lib. Verifique se seu servidor tem acesso à internet (saída HTTP/HTTPS).\n";
exit(1);
