const axios = require('axios'); const Settings = require('../models/Settings'); // Fonction pour créer un client Radarr pour un utilisateur spécifique const createRadarrClient = async (userId) => { const settings = await Settings.findOne({ user: userId }); if (!settings || !settings.radarr || !settings.radarr.url || !settings.radarr.apiKey) { throw new Error('Paramètres Radarr non configurés'); } return axios.create({ baseURL: settings.radarr.url, headers: { 'X-Api-Key': settings.radarr.apiKey } }); }; // Récupérer tous les films exports.getAllMovies = async (req, res) => { try { const radarrClient = await createRadarrClient(req.user.id); const response = await radarrClient.get('/movie'); res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération des films:', error); if (error.message === 'Paramètres Radarr non configurés') { return res.status(400).json({ message: error.message }); } res.status(500).json({ message: 'Erreur lors de la récupération des films' }); } }; // Récupérer les films manquants exports.getMissingMovies = async (req, res) => { try { const radarrClient = await createRadarrClient(req.user.id); const response = await radarrClient.get('/movie'); const missingMovies = response.data.filter(movie => !movie.hasFile); res.json(missingMovies); } catch (error) { console.error('Erreur lors de la récupération des films manquants:', error); if (error.message === 'Paramètres Radarr non configurés') { return res.status(400).json({ message: error.message }); } res.status(500).json({ message: 'Erreur lors de la récupération des films manquants' }); } }; // Récupérer les films à venir exports.getUpcomingMovies = async (req, res) => { try { const radarrClient = await createRadarrClient(req.user.id); const today = new Date(); const response = await radarrClient.get('/movie'); const upcomingMovies = response.data.filter(movie => { const releaseDate = new Date(movie.digitalRelease || movie.physicalRelease || movie.inCinemas); return releaseDate > today; }); res.json(upcomingMovies); } catch (error) { console.error('Erreur lors de la récupération des films à venir:', error); if (error.message === 'Paramètres Radarr non configurés') { return res.status(400).json({ message: error.message }); } res.status(500).json({ message: 'Erreur lors de la récupération des films à venir' }); } }; // Récupérer l'historique des téléchargements exports.getHistory = async (req, res) => { try { const radarrClient = await createRadarrClient(req.user.id); const response = await radarrClient.get('/history'); res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération de l\'historique:', error); if (error.message === 'Paramètres Radarr non configurés') { return res.status(400).json({ message: error.message }); } res.status(500).json({ message: 'Erreur lors de la récupération de l\'historique' }); } }; // Récupérer le calendrier exports.getCalendar = async (req, res) => { try { const radarrClient = await createRadarrClient(req.user.id); const { start, end } = req.query; const startDate = start || new Date().toISOString(); const endDate = end || new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(); const response = await radarrClient.get('/calendar', { params: { start: startDate, end: endDate } }); res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération du calendrier:', error); if (error.message === 'Paramètres Radarr non configurés') { return res.status(400).json({ message: error.message }); } res.status(500).json({ message: 'Erreur lors de la récupération du calendrier' }); } };