<?php

// Carrega o AWS SDK instalado pelo Composer
require __DIR__ . '/vendor/autoload.php';

// Carrega as configurações do Cloudflare R2
require_once '/var/www/gatoflix-config/r2.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: X-Gatoflix-Token");

// Conexão com o banco (necessária para validar o token)
require_once '/var/www/gatoflix-config/conexao.php';

// Validação da sessão
require_once '/var/www/gatoflix-config/validar_token.php';

// Somente administradores podem enviar capas
if ($perfil_usuario_autenticado !== 'admin') {
    http_response_code(403);

    echo json_encode([
        "sucesso" => false,
        "mensagem" => "Acesso negado: apenas administradores podem enviar capas."
    ], JSON_UNESCAPED_UNICODE);

    $conexao->close();
    exit;
}

// Verifica se uma imagem chegou
if (isset($_FILES['imagem'])) {

    $file = $_FILES['imagem'];

    // Gera um nome único para evitar sobrescrever arquivos
    $fileName =
        time() . '_' .
        preg_replace(
            "/[^a-zA-Z0-9.]/",
            "",
            basename($file['name'])
        );

    $tmpFilePath = $file['tmp_name'];

    // Cliente S3 compatível com Cloudflare R2
    $s3 = new S3Client([
        'version' => 'latest',
        'region' => 'auto',
        'endpoint' => $endpoint,
        'credentials' => [
            'key' => $accessKey,
            'secret' => $secretKey,
        ],
    ]);

    try {

        $s3->putObject([
            'Bucket' => $bucketName,
            'Key' => $fileName,
            'SourceFile' => $tmpFilePath,
            'ContentType' => mime_content_type($tmpFilePath),
        ]);

        // Monta a URL pública da imagem
        $urlFinal =
            rtrim($publicUrlBase, '/') .
            '/' .
            $fileName;

        echo json_encode([
            "sucesso" => true,
            "imagem_url" => $urlFinal
        ], JSON_UNESCAPED_UNICODE);

    } catch (AwsException $e) {

        echo json_encode([
            "sucesso" => false,
            "mensagem" => "Erro ao enviar a imagem."
        ], JSON_UNESCAPED_UNICODE);
    }

} else {

    echo json_encode([
        "sucesso" => false,
        "mensagem" => "Nenhuma imagem foi enviada pelo aplicativo."
    ], JSON_UNESCAPED_UNICODE);
}

// Fecha a conexão usada pela validação do token
$conexao->close();
?>
