// src/services/PlayerService.js const axios = require('axios'); class PlayerService { constructor() { this.baseUrl = 'https://www.vrbattles.gg'; } async findUserByUsername(username) { try { console.log(`Fetching data for username: ${username}`); const url = `${this.baseUrl}/api/get_player_data_by_username/${encodeURIComponent(username)}`; console.log(`API URL: ${url}`); const response = await axios.get(url, { timeout: 5000 }); console.log('API Response:', JSON.stringify(response.data, null, 2)); if (response.data && response.data.success) { // Parse player_data if it's a string if (typeof response.data.player_data === 'string') { try { response.data.player_data = JSON.parse(response.data.player_data); } catch (parseError) { console.error('Error parsing player_data:', parseError); } } } return response.data; } catch (error) { console.error('Error fetching user data:', { message: error.message, response: error.response?.data, status: error.response?.status }); return null; } } getBadgeImageUrl(badgeName) { if (!badgeName) { return `${this.baseUrl}/assets/images/badges/xp_badges/A/BADGE_A1_72p.png`; } badgeName = badgeName.toUpperCase().replace(/ /g, '_'); let badgeUrl = `${this.baseUrl}/assets/images/badges/xp_badges/`; if (badgeName.startsWith('A')) { badgeUrl += 'A/'; } else if (badgeName.startsWith('B')) { badgeUrl += 'B/'; } else if (badgeName.startsWith('C')) { badgeUrl += 'C/'; } else { badgeUrl += 'A/'; } badgeUrl += `BADGE_${badgeName}_72p.png`; return badgeUrl; } getProfileUrl(username) { return `${this.baseUrl}/profile/${username}`; } getStatsUrl(username) { return `${this.baseUrl}/profile/${username}/stats`; } } module.exports = PlayerService;