Files
BattleBot/src/services/PlayerService.js
2024-11-28 04:47:58 -06:00

74 lines
2.0 KiB
JavaScript

// 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;