From 6dd506eb6ed2311cfd068624295d23636ce7121d Mon Sep 17 00:00:00 2001 From: mahek Date: Mon, 28 Jul 2025 09:46:26 +0200 Subject: [PATCH] Use db value --- backend/controllers/radarrController.js | 41 ++++++++++++++++++++----- backend/controllers/sonarrController.js | 37 +++++++++++++++++----- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/backend/controllers/radarrController.js b/backend/controllers/radarrController.js index 4438af0..daf7765 100644 --- a/backend/controllers/radarrController.js +++ b/backend/controllers/radarrController.js @@ -1,21 +1,32 @@ const axios = require('axios'); -const config = require('../../config/radarr'); +const Settings = require('../models/Settings'); -// Client API pour Radarr -const radarrClient = axios.create({ - baseURL: config.baseURL, - headers: { - 'X-Api-Key': config.apiKey +// 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' }); } }; @@ -23,11 +34,15 @@ exports.getAllMovies = async (req, res) => { // 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' }); } }; @@ -35,6 +50,7 @@ exports.getMissingMovies = async (req, res) => { // 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'); @@ -46,6 +62,9 @@ exports.getUpcomingMovies = async (req, res) => { 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' }); } }; @@ -53,10 +72,14 @@ exports.getUpcomingMovies = async (req, res) => { // 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' }); } }; @@ -64,6 +87,7 @@ exports.getHistory = async (req, res) => { // 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(); @@ -78,6 +102,9 @@ exports.getCalendar = async (req, res) => { 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' }); } }; diff --git a/backend/controllers/sonarrController.js b/backend/controllers/sonarrController.js index 645d748..0d2102d 100644 --- a/backend/controllers/sonarrController.js +++ b/backend/controllers/sonarrController.js @@ -1,21 +1,32 @@ const axios = require('axios'); -const config = require('../../config/sonarr'); +const Settings = require('../models/Settings'); -// Client API pour Sonarr -const sonarrClient = axios.create({ - baseURL: config.baseURL, - headers: { - 'X-Api-Key': config.apiKey +// Fonction pour créer un client Sonarr pour un utilisateur spécifique +const createSonarrClient = async (userId) => { + const settings = await Settings.findOne({ user: userId }); + if (!settings || !settings.sonarr || !settings.sonarr.url || !settings.sonarr.apiKey) { + throw new Error('Paramètres Sonarr non configurés'); } -}); + + return axios.create({ + baseURL: settings.sonarr.url, + headers: { + 'X-Api-Key': settings.sonarr.apiKey + } + }); +}; // Récupérer toutes les séries exports.getAllSeries = async (req, res) => { try { + const sonarrClient = await createSonarrClient(req.user.id); const response = await sonarrClient.get('/series'); res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération des séries:', error); + if (error.message === 'Paramètres Sonarr non configurés') { + return res.status(400).json({ message: error.message }); + } res.status(500).json({ message: 'Erreur lors de la récupération des séries' }); } }; @@ -23,10 +34,14 @@ exports.getAllSeries = async (req, res) => { // Récupérer les séries manquantes exports.getMissingSeries = async (req, res) => { try { + const sonarrClient = await createSonarrClient(req.user.id); const response = await sonarrClient.get('/wanted/missing'); res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération des séries manquantes:', error); + if (error.message === 'Paramètres Sonarr non configurés') { + return res.status(400).json({ message: error.message }); + } res.status(500).json({ message: 'Erreur lors de la récupération des séries manquantes' }); } }; @@ -34,6 +49,7 @@ exports.getMissingSeries = async (req, res) => { // Récupérer les séries à venir exports.getUpcomingSeries = async (req, res) => { try { + const sonarrClient = await createSonarrClient(req.user.id); const response = await sonarrClient.get('/calendar', { params: { start: new Date().toISOString(), @@ -43,6 +59,9 @@ exports.getUpcomingSeries = async (req, res) => { res.json(response.data); } catch (error) { console.error('Erreur lors de la récupération des séries à venir:', error); + if (error.message === 'Paramètres Sonarr non configurés') { + return res.status(400).json({ message: error.message }); + } res.status(500).json({ message: 'Erreur lors de la récupération des séries à venir' }); } }; @@ -50,10 +69,14 @@ exports.getUpcomingSeries = async (req, res) => { // Récupérer l'historique des téléchargements exports.getHistory = async (req, res) => { try { + const sonarrClient = await createSonarrClient(req.user.id); const response = await sonarrClient.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 Sonarr 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' }); } };