const Settings = require('../models/Settings'); const axios = require('axios'); // Récupérer les paramètres de l'utilisateur connecté exports.getSettings = async (req, res) => { try { // Rechercher les paramètres pour l'utilisateur connecté const settings = await Settings.findOne({ user: req.user.id }); if (!settings) { return res.status(404).json({ message: "Aucun paramètre trouvé pour cet utilisateur" }); } // Ne pas envoyer l'ID de l'utilisateur ni l'ID du document dans la réponse const { sonarr, radarr } = settings; res.json({ sonarr, radarr }); } catch (error) { console.error('Erreur lors de la récupération des paramètres:', error); res.status(500).json({ message: 'Erreur serveur' }); } }; // Sauvegarder ou mettre à jour les paramètres exports.saveSettings = async (req, res) => { try { const { sonarr, radarr } = req.body; // Validation des entrées if (!sonarr || !radarr) { return res.status(400).json({ message: 'Les configurations Sonarr et Radarr sont requises' }); } if (!sonarr.url || !sonarr.apiKey || !radarr.url || !radarr.apiKey) { return res.status(400).json({ message: 'Tous les champs sont requis' }); } // Vérifier si l'utilisateur a déjà des paramètres let settings = await Settings.findOne({ user: req.user.id }); if (settings) { // Mettre à jour les paramètres existants settings.sonarr = sonarr; settings.radarr = radarr; settings.updatedAt = Date.now(); } else { // Créer de nouveaux paramètres settings = new Settings({ user: req.user.id, sonarr, radarr }); } await settings.save(); res.json({ message: 'Paramètres enregistrés avec succès' }); } catch (error) { console.error('Erreur lors de l\'enregistrement des paramètres:', error); res.status(500).json({ message: 'Erreur serveur' }); } }; // Tester la connexion à une API (Sonarr ou Radarr) exports.testConnection = async (req, res) => { try { const { type, url, apiKey } = req.body; // Validation des entrées if (!type || !url || !apiKey) { return res.status(400).json({ message: 'Type, URL et clé API sont requis' }); } if (type !== 'sonarr' && type !== 'radarr') { return res.status(400).json({ message: 'Type invalide. Doit être "sonarr" ou "radarr"' }); } // Tentative de connexion à l'API try { // Utiliser le endpoint /system/status qui est disponible à la fois sur Sonarr et Radarr const response = await axios.get(`${url}/system/status`, { headers: { 'X-Api-Key': apiKey }, timeout: 5000 // Timeout de 5 secondes }); if (response.status === 200) { res.json({ success: true, message: 'Connexion établie avec succès', details: { version: response.data.version, appName: response.data.appName } }); } else { res.status(400).json({ success: false, message: 'Échec de la connexion' }); } } catch (apiError) { console.error(`Erreur lors du test de l'API ${type}:`, apiError); res.status(400).json({ success: false, message: 'Échec de la connexion', error: apiError.message }); } } catch (error) { console.error('Erreur lors du test de connexion:', error); res.status(500).json({ message: 'Erreur serveur' }); } };