<?php
require_once __DIR__ . '/src/auth.php';
require_once __DIR__ . '/src/nextcloud.php';
require_login();

$file_path = $_GET['file'] ?? '';
$source = $_GET['source'] ?? 'local';
$full_path = $_GET['full'] ?? '';

if (empty($file_path) && empty($full_path)) {
    die("Arquivo não especificado.");
}

if ($source === 'remote') {
    try {
        $nc = new Nextcloud();
        $remotePath = urldecode($file_path);
        $fileName = basename($remotePath);

        // Definir cabeçalhos para o navegador
        header('Content-Type: application/pdf');
        header('Content-Disposition: inline; filename="' . $fileName . '"');
        
        // Em vez de baixar para um arquivo, vamos usar o CURL para escrever direto no buffer de saída
        $url = rtrim(NC_WEBDAV_URL, '/') . '/' . $_SESSION['username'] . '/' . ltrim($remotePath, '/');
        $url = str_replace(' ', '%20', $url);

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERPWD, $_SESSION['username'] . ":" . $_SESSION['nc_pass']);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); // Escrever direto na saída
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        
        // Desativar buffering do PHP para o streaming ser instantâneo
        if (ob_get_level()) ob_end_clean();
        
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode !== 200) {
            // Se falhou, não podemos mandar o PDF
            header_remove('Content-Type');
            header_remove('Content-Disposition');
            die("Erro ao acessar o arquivo no Nextcloud (HTTP $httpCode).");
        }
        exit;
    } catch (Exception $e) {
        die("Erro: " . $e->getMessage());
    }
} else {
    // Para arquivos locais (Nextcloud Sync)
    $full_path = urldecode($full_path);
    
    if (file_exists($full_path) && strtolower(pathinfo($full_path, PATHINFO_EXTENSION)) === 'pdf') {
        header('Content-Type: application/pdf');
        header('Content-Disposition: inline; filename="' . basename($full_path) . '"');
        header('Content-Length: ' . filesize($full_path));
        readfile($full_path);
        exit;
    } else {
        die("Arquivo não encontrado ou formato inválido: " . htmlspecialchars($full_path));
    }
}
