import { NextRequest, NextResponse } from 'next/server';
import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';

// Configuration S3
const s3Client = new S3Client({
  region: process.env.AWS_REGION || 'eu-west-3',
  credentials: {
    accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
  },
});

const BUCKET_NAME = (process.env.AWS_S3_BUCKET || 'odentas-docs').trim();

export async function POST(request: NextRequest) {
  try {
    const { key } = await request.json();

    if (!key) {
      return NextResponse.json(
        { error: 'Clé S3 manquante' },
        { status: 400 }
      );
    }

    // Créer la commande pour récupérer l'objet
    const command = new GetObjectCommand({
      Bucket: BUCKET_NAME,
      Key: key,
    });

    // Générer l'URL pré-signée (valide pendant 1 heure)
    const presignedUrl = await getSignedUrl(s3Client, command, {
      expiresIn: 3600, // 1 heure
    });

    return NextResponse.json({
      url: presignedUrl,
      expiresIn: 3600
    });

  } catch (error) {
    console.error('Erreur lors de la génération de l\'URL pré-signée:', error);
    return NextResponse.json(
      { error: 'Erreur lors de la génération de l\'URL pré-signée' },
      { status: 500 }
    );
  }
}