const axios = require('axios'); const { BASE_URL, EMAIL, PASSWORD, SEND_PHOTOS } = require('../config'); let cachedToken = null; async function getToken(force = false) { if (!SEND_PHOTOS) return null; if (cachedToken && !force) return cachedToken; try { const res = await axios.post(`${BASE_URL}/auth/login`, { email: EMAIL, password: PASSWORD }); cachedToken = res.data.token; return cachedToken; } catch (err) { console.error('ERRORE LOGIN:', err.message); return null; } } async function postWithAuth(url, payload) { if (!SEND_PHOTOS) return; let token = await getToken(); if (!token) throw new Error('Token assente'); try { await axios.post(url, payload, { headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, timeout: 20000, }); } catch (err) { if (err.response && err.response.status === 401) { token = await getToken(true); if (!token) throw err; await axios.post(url, payload, { headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, timeout: 20000, }); } else { throw err; } } } module.exports = postWithAuth;