// src/integrations/red/client.js import axios from 'axios'; import { logger } from '../../utils/logger.js'; export const redAxios = axios.create({ baseURL: process.env.RED_BASE_URL, timeout: 10000, headers: { 'ClientID': process.env.RED_CLIENT_ID, 'ApiKey': process.env.RED_API_KEY, 'Accept': 'application/json', }, }); // Optional request logging redAxios.interceptors.request.use(cfg => { logger('red:request', `${cfg.method.toUpperCase()} ${cfg.url} (params: ${JSON.stringify(cfg.params || {})})`, 'debug'); return cfg; }); redAxios.interceptors.response.use( res => res, err => { const msg = err.response ? `${err.response.status} – ${JSON.stringify(err.response.data || err.message)}` : err.message; logger('red:error', msg); return Promise.reject(err); } ); /** * Low-level helper: fetch players status with given params */ export async function fetchPlayersStatus(params = {}) { try { const response = await redAxios.get('/PlayerService/playersstatus', { params }); return response.data.PlayersStatus || []; } catch (err) { const ctx = err.response?.data?.message || err.message; throw new Error(`RED playersstatus failed: ${ctx}`); } } export default redAxios;