/** * API endpoint para limpiar archivos temporales de Web Share Target * POST /api/share-target/cleanup * * Elimina archivos temporales después de ser procesados */ import { promises as fs } from 'fs' import { join } from 'path' export default defineEventHandler(async (event) => { try { const body = await readBody(event) const { imageUrl } = body if (!imageUrl || typeof imageUrl !== 'string') { throw createError({ statusCode: 400, message: 'imageUrl es requerido' }) } // Extraer el filename de la URL (/temp-shared/filename.jpg) const filename = imageUrl.split('/').pop() if (!filename || !filename.startsWith('shared-')) { throw createError({ statusCode: 400, message: 'URL de imagen inválida' }) } // Construir ruta completa del archivo const filepath = join(process.cwd(), 'public', 'temp-shared', filename) // Intentar eliminar el archivo try { await fs.unlink(filepath) console.log(`🗑️ Archivo temporal eliminado: ${filename}`) return { success: true, message: 'Archivo temporal eliminado correctamente' } } catch (err: any) { // Si el archivo no existe, no es un error crítico if (err.code === 'ENOENT') { console.log(`⚠️ Archivo temporal ya no existe: ${filename}`) return { success: true, message: 'Archivo ya había sido eliminado' } } throw err } } catch (error: any) { console.error('Error en cleanup de share-target:', error) // Re-throw si ya es un error de createError if (error.statusCode) { throw error } throw createError({ statusCode: 500, message: error.message || 'Error al eliminar archivo temporal' }) } })