chore: improve logging
This commit is contained in:
parent
ee10a4b0bb
commit
2cdf46e8cb
122
app.js
122
app.js
@ -113,13 +113,15 @@ const tokenManager = {
|
|||||||
const currentTime = Date.now();
|
const currentTime = Date.now();
|
||||||
|
|
||||||
if (storedToken && (currentTime - storedToken.timestamp < 1800000)) { // 30 minutes expiry
|
if (storedToken && (currentTime - storedToken.timestamp < 1800000)) { // 30 minutes expiry
|
||||||
|
console.log(`Attempting to validate token for SSO: ${ssoToken.substring(0, 5)}...`);
|
||||||
console.log("Using cached token");
|
console.log("Using cached token");
|
||||||
return storedToken.token;
|
return storedToken.token;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to login and get a new token
|
// We need to login and get a new token
|
||||||
try {
|
try {
|
||||||
console.log("Authenticating with new SSO token");
|
console.log(`Attempting to login with SSO token: ${ssoToken.substring(0, 5)}...`);
|
||||||
|
console.log(`Current active sessions: ${this.activeSessions.size}`);
|
||||||
const loginResult = await Promise.race([
|
const loginResult = await Promise.race([
|
||||||
API.login(ssoToken),
|
API.login(ssoToken),
|
||||||
timeoutPromise(10000), // 10 second timeout
|
timeoutPromise(10000), // 10 second timeout
|
||||||
@ -131,7 +133,8 @@ const tokenManager = {
|
|||||||
timestamp: currentTime
|
timestamp: currentTime
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Authentication successful");
|
console.log(`Authentication successful - Token: ${loginResult.substring(0, 5)}...`);
|
||||||
|
console.log(`Token cached at: ${new Date().toISOString()}`);
|
||||||
return loginResult;
|
return loginResult;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Authentication failed:", error);
|
console.error("Authentication failed:", error);
|
||||||
@ -157,13 +160,15 @@ const timeoutPromise = (ms) => {
|
|||||||
// Helper function to ensure login
|
// Helper function to ensure login
|
||||||
const ensureLogin = async (ssoToken) => {
|
const ensureLogin = async (ssoToken) => {
|
||||||
if (!activeSessions.has(ssoToken)) {
|
if (!activeSessions.has(ssoToken)) {
|
||||||
console.log("Attempting to login with SSO token");
|
console.log(`Attempting to login with SSO token: ${ssoToken.substring(0, 5)}...`);
|
||||||
|
// console.log(`Attempting to login with SSO token: ${ssoToken}`);
|
||||||
const loginResult = await Promise.race([
|
const loginResult = await Promise.race([
|
||||||
API.login(ssoToken),
|
API.login(ssoToken),
|
||||||
timeoutPromise(10000), // 10 second timeout
|
timeoutPromise(10000), // 10 second timeout
|
||||||
]);
|
]);
|
||||||
|
|
||||||
console.log("Login successful:", loginResult);
|
console.log(`Login successful: ${JSON.stringify(loginResult)}`);
|
||||||
|
console.log(`Session created at: ${new Date().toISOString()}`);
|
||||||
activeSessions.set(ssoToken, new Date());
|
activeSessions.set(ssoToken, new Date());
|
||||||
} else {
|
} else {
|
||||||
console.log("Using existing session");
|
console.log("Using existing session");
|
||||||
@ -173,6 +178,8 @@ const ensureLogin = async (ssoToken) => {
|
|||||||
// Helper function to handle API errors
|
// Helper function to handle API errors
|
||||||
const handleApiError = (error, res) => {
|
const handleApiError = (error, res) => {
|
||||||
console.error("API Error:", error);
|
console.error("API Error:", error);
|
||||||
|
console.error(`Error Stack: ${error.stack}`);
|
||||||
|
console.error(`Error Time: ${new Date().toISOString()}`);
|
||||||
|
|
||||||
// Try to extract more useful information from the error
|
// Try to extract more useful information from the error
|
||||||
let errorMessage = error.message || "Unknown API error";
|
let errorMessage = error.message || "Unknown API error";
|
||||||
@ -202,13 +209,32 @@ const handleApiError = (error, res) => {
|
|||||||
// API endpoint to fetch stats
|
// API endpoint to fetch stats
|
||||||
app.post("/api/stats", async (req, res) => {
|
app.post("/api/stats", async (req, res) => {
|
||||||
console.log("Received request for /api/stats");
|
console.log("Received request for /api/stats");
|
||||||
try {
|
console.log(`Request IP: ${req.ip || req.connection.remoteAddress}`);
|
||||||
const { username, ssoToken, platform, game, apiCall } = req.body;
|
console.log(`Request JSON: ${JSON.stringify({
|
||||||
|
username: req.body.username,
|
||||||
|
platform: req.body.platform,
|
||||||
|
game: req.body.game,
|
||||||
|
apiCall: req.body.apiCall,
|
||||||
|
sanitize: req.body.sanitize,
|
||||||
|
replaceKeys: req.body.replaceKeys
|
||||||
|
})}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { username, ssoToken, platform, game, apiCall, sanitize, replaceKeys } = req.body;
|
||||||
|
|
||||||
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
`Request details - Username: ${username}, Platform: ${platform}, Game: ${game}, API Call: ${apiCall}`
|
`Request details - Username: ${username}, Platform: ${platform}, Game: ${game}, API Call: ${apiCall}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log("=== STATS REQUEST ===");
|
||||||
|
console.log(`Username: ${username || 'Not provided'}`);
|
||||||
|
console.log(`Platform: ${platform}`);
|
||||||
|
console.log(`Game: ${game}`);
|
||||||
|
console.log(`API Call: ${apiCall}`);
|
||||||
|
console.log(`Processing Options - Sanitize: ${sanitize}, Replace Keys: ${replaceKeys}`);
|
||||||
|
console.log("====================="); */
|
||||||
|
|
||||||
if (!ssoToken) {
|
if (!ssoToken) {
|
||||||
return res.status(400).json({ error: "SSO Token is required" });
|
return res.status(400).json({ error: "SSO Token is required" });
|
||||||
}
|
}
|
||||||
@ -379,6 +405,8 @@ app.post("/api/stats", async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log("Data fetched successfully");
|
console.log("Data fetched successfully");
|
||||||
|
console.log(`Response Size: ~${JSON.stringify(data).length / 1024} KB`);
|
||||||
|
console.log(`Response Time: ${new Date().toISOString()}`);
|
||||||
|
|
||||||
// Safely handle the response data
|
// Safely handle the response data
|
||||||
if (!data) {
|
if (!data) {
|
||||||
@ -391,7 +419,7 @@ app.post("/api/stats", async (req, res) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Returning data to client");
|
// console.log("Returning data to client");
|
||||||
|
|
||||||
const { sanitize, replaceKeys } = req.body;
|
const { sanitize, replaceKeys } = req.body;
|
||||||
|
|
||||||
@ -419,13 +447,30 @@ app.post("/api/stats", async (req, res) => {
|
|||||||
// API endpoint to fetch recent matches
|
// API endpoint to fetch recent matches
|
||||||
app.post("/api/matches", async (req, res) => {
|
app.post("/api/matches", async (req, res) => {
|
||||||
console.log("Received request for /api/matches");
|
console.log("Received request for /api/matches");
|
||||||
try {
|
console.log(`Request IP: ${req.ip || req.connection.remoteAddress}`);
|
||||||
const { username, ssoToken, platform, game } = req.body;
|
console.log(`Request JSON: ${JSON.stringify({
|
||||||
|
username: req.body.username,
|
||||||
|
platform: req.body.platform,
|
||||||
|
game: req.body.game,
|
||||||
|
sanitize: req.body.sanitize,
|
||||||
|
replaceKeys: req.body.replaceKeys
|
||||||
|
})}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { username, ssoToken, platform, game, sanitize, replaceKeys } = req.body;
|
||||||
|
|
||||||
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
`Request details - Username: ${username}, Platform: ${platform}, Game: ${game}`
|
`Request details - Username: ${username}, Platform: ${platform}, Game: ${game}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log("=== MATCHES REQUEST ===");
|
||||||
|
console.log(`Username: ${username}`);
|
||||||
|
console.log(`Platform: ${platform}`);
|
||||||
|
console.log(`Game: ${game}`);
|
||||||
|
console.log(`Processing Options - Sanitize: ${sanitize}, Replace Keys: ${replaceKeys}`);
|
||||||
|
console.log("========================"); */
|
||||||
|
|
||||||
if (!username || !ssoToken) {
|
if (!username || !ssoToken) {
|
||||||
return res
|
return res
|
||||||
.status(400)
|
.status(400)
|
||||||
@ -541,14 +586,31 @@ app.post("/api/matches", async (req, res) => {
|
|||||||
// API endpoint to fetch match info
|
// API endpoint to fetch match info
|
||||||
app.post("/api/matchInfo", async (req, res) => {
|
app.post("/api/matchInfo", async (req, res) => {
|
||||||
console.log("Received request for /api/matchInfo");
|
console.log("Received request for /api/matchInfo");
|
||||||
|
console.log(`Request IP: ${req.ip || req.connection.remoteAddress}`);
|
||||||
|
console.log(`Request JSON: ${JSON.stringify({
|
||||||
|
matchId: req.body.matchId,
|
||||||
|
platform: req.body.platform,
|
||||||
|
game: req.body.game,
|
||||||
|
sanitize: req.body.sanitize,
|
||||||
|
replaceKeys: req.body.replaceKeys
|
||||||
|
})}`);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { matchId, ssoToken, platform, game } = req.body;
|
const { matchId, ssoToken, platform, game, sanitize, replaceKeys } = req.body;
|
||||||
const mode = "mp";
|
const mode = "mp";
|
||||||
|
|
||||||
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
`Request details - Match ID: ${matchId}, Platform: ${platform}, Game: ${game}`
|
`Request details - Match ID: ${matchId}, Platform: ${platform}, Game: ${game}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log("=== MATCH INFO REQUEST ===");
|
||||||
|
console.log(`Match ID: ${matchId}`);
|
||||||
|
console.log(`Platform: ${platform}`);
|
||||||
|
console.log(`Game: ${game}`);
|
||||||
|
console.log(`Processing Options - Sanitize: ${sanitize}, Replace Keys: ${replaceKeys}`);
|
||||||
|
console.log("=========================="); */
|
||||||
|
|
||||||
if (!matchId || !ssoToken) {
|
if (!matchId || !ssoToken) {
|
||||||
return res
|
return res
|
||||||
.status(400)
|
.status(400)
|
||||||
@ -650,13 +712,30 @@ app.post("/api/matchInfo", async (req, res) => {
|
|||||||
// API endpoint for user-related API calls
|
// API endpoint for user-related API calls
|
||||||
app.post("/api/user", async (req, res) => {
|
app.post("/api/user", async (req, res) => {
|
||||||
console.log("Received request for /api/user");
|
console.log("Received request for /api/user");
|
||||||
try {
|
console.log(`Request IP: ${req.ip || req.connection.remoteAddress}`);
|
||||||
const { username, ssoToken, platform, userCall } = req.body;
|
console.log(`Request JSON: ${JSON.stringify({
|
||||||
|
username: req.body.username,
|
||||||
|
platform: req.body.platform,
|
||||||
|
userCall: req.body.userCall,
|
||||||
|
sanitize: req.body.sanitize,
|
||||||
|
replaceKeys: req.body.replaceKeys
|
||||||
|
})}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { username, ssoToken, platform, userCall, sanitize, replaceKeys } = req.body;
|
||||||
|
|
||||||
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
`Request details - Username: ${username}, Platform: ${platform}, User Call: ${userCall}`
|
`Request details - Username: ${username}, Platform: ${platform}, User Call: ${userCall}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log("=== USER DATA REQUEST ===");
|
||||||
|
console.log(`Username: ${username || 'Not provided'}`);
|
||||||
|
console.log(`Platform: ${platform}`);
|
||||||
|
console.log(`User Call: ${userCall}`);
|
||||||
|
console.log(`Processing Options - Sanitize: ${sanitize}, Replace Keys: ${replaceKeys}`);
|
||||||
|
console.log("========================="); */
|
||||||
|
|
||||||
if (!ssoToken) {
|
if (!ssoToken) {
|
||||||
return res.status(400).json({ error: "SSO Token is required" });
|
return res.status(400).json({ error: "SSO Token is required" });
|
||||||
}
|
}
|
||||||
@ -759,13 +838,28 @@ app.post("/api/user", async (req, res) => {
|
|||||||
// API endpoint for fuzzy search
|
// API endpoint for fuzzy search
|
||||||
app.post("/api/search", async (req, res) => {
|
app.post("/api/search", async (req, res) => {
|
||||||
console.log("Received request for /api/search");
|
console.log("Received request for /api/search");
|
||||||
try {
|
console.log(`Request IP: ${req.ip || req.connection.remoteAddress}`);
|
||||||
const { username, ssoToken, platform } = req.body;
|
console.log(`Request JSON: ${JSON.stringify({
|
||||||
|
username: req.body.username,
|
||||||
|
platform: req.body.platform,
|
||||||
|
sanitize: req.body.sanitize,
|
||||||
|
replaceKeys: req.body.replaceKeys
|
||||||
|
})}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { username, ssoToken, platform, sanitize, replaceKeys } = req.body;
|
||||||
|
|
||||||
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
`Request details - Username to search: ${username}, Platform: ${platform}`
|
`Request details - Username to search: ${username}, Platform: ${platform}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log("=== SEARCH REQUEST ===");
|
||||||
|
console.log(`Search Term: ${username}`);
|
||||||
|
console.log(`Platform: ${platform}`);
|
||||||
|
console.log(`Processing Options - Sanitize: ${sanitize}, Replace Keys: ${replaceKeys}`);
|
||||||
|
console.log("======================"); */
|
||||||
|
|
||||||
if (!username || !ssoToken) {
|
if (!username || !ssoToken) {
|
||||||
return res
|
return res
|
||||||
.status(400)
|
.status(400)
|
||||||
|
@ -235,6 +235,12 @@ function jsonToYAML(json) {
|
|||||||
|
|
||||||
// Common fetch function
|
// Common fetch function
|
||||||
async function fetchData(endpoint, requestData) {
|
async function fetchData(endpoint, requestData) {
|
||||||
|
console.log(`[CLIENT] Request to ${endpoint} at ${new Date().toISOString()}`);
|
||||||
|
console.log(`[CLIENT] Request data: ${JSON.stringify({
|
||||||
|
...requestData,
|
||||||
|
ssoToken: requestData.ssoToken ? requestData.ssoToken.substring(0, 5) + '...' : 'none'
|
||||||
|
})}`);
|
||||||
|
|
||||||
const errorElement = document.getElementById("error");
|
const errorElement = document.getElementById("error");
|
||||||
const loadingElement = document.getElementById("loading");
|
const loadingElement = document.getElementById("loading");
|
||||||
const resultsElement = document.getElementById("results");
|
const resultsElement = document.getElementById("results");
|
||||||
@ -282,6 +288,9 @@ async function fetchData(endpoint, requestData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
console.log(`[CLIENT] Response received at ${new Date().toISOString()}`);
|
||||||
|
console.log(`[CLIENT] Response status: ${response.status}`);
|
||||||
|
console.log(`[CLIENT] Response size: ~${JSON.stringify(data).length / 1024} KB`);
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(data.message || `Error: ${response.status}`);
|
throw new Error(data.message || `Error: ${response.status}`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user