74 lines
2.0 KiB
JavaScript
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; |