From f0a72b7658c0bf6ea3bf50f5075bde2f43bcc7ec Mon Sep 17 00:00:00 2001 From: ibratabian17 Date: Mon, 1 Jul 2024 17:08:08 +0800 Subject: [PATCH] Migrate to Axios --- core/route/leaderboard.js | 42 +++++++++++++------------ core/wdf/fakewdf.js | 64 ++++++++++++++++++++++++--------------- package.json | 4 +-- 3 files changed, 64 insertions(+), 46 deletions(-) diff --git a/core/route/leaderboard.js b/core/route/leaderboard.js index b76db34..a4423fe 100644 --- a/core/route/leaderboard.js +++ b/core/route/leaderboard.js @@ -8,7 +8,6 @@ const core = { CloneObject: require('../helper').CloneObject, getSavefilePath: require('../helper').getSavefilePath, generateCarousel: require('../carousel/carousel').generateCarousel, generateSweatCarousel: require('../carousel/carousel').generateSweatCarousel, generateCoopCarousel: require('../carousel/carousel').generateCoopCarousel, updateMostPlayed: require('../carousel/carousel').updateMostPlayed } -var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; const DOTW_PATH = path.join(core.getSavefilePath(), 'leaderboard/dotw/'); function generateToolNickname() { @@ -27,29 +26,34 @@ function generateToolNickname() { } } -const getProfileData = (req) => { - return new Promise((resolve, reject) => { + +const getProfileData = async (req) => { + try { const ticket = req.header("Authorization"); const sku = req.header('X-SkuId'); const prodwsurl = "https://prod.just-dance.com/"; - const xhr33 = new XMLHttpRequest(); - xhr33.open(req.method, prodwsurl + req.url, true); - xhr33.setRequestHeader("X-SkuId", sku); - xhr33.setRequestHeader("Authorization", ticket); - xhr33.setRequestHeader("Content-Type", "application/json"); + const response = await axios({ + method: req.method, + url: prodwsurl + req.url, + headers: { + "X-SkuId": sku, + "Authorization": ticket, + "Content-Type": "application/json" + }, + data: req.body + }); - xhr33.onload = () => { - if (xhr33.status >= 200 && xhr33.status < 300) { - resolve(JSON.parse(xhr33.responseText)); - } else { - reject(new Error(`HTTP status ${xhr33.status}`)); - } - }; - - xhr33.onerror = () => reject(new Error('Network error')); - xhr33.send(JSON.stringify(req.body)); - }); + return response.data; + } catch (error) { + if (error.response) { + throw new Error(`HTTP status ${error.response.status}`); + } else if (error.request) { + throw new Error('Network error'); + } else { + throw new Error(error.message); + } + } }; const getGameVersion = (req) => { diff --git a/core/wdf/fakewdf.js b/core/wdf/fakewdf.js index 275c239..d767a6e 100644 --- a/core/wdf/fakewdf.js +++ b/core/wdf/fakewdf.js @@ -1,5 +1,6 @@ +var axios = require("axios"); + function initroute(app) { - var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; var prodwsurl = "https://jmcs-prod.just-dance.com" app.post("/wdf/v1/assign-room", (req, res) => { res.send(require("../../database/wdf/assign-room-pc.json")); @@ -272,30 +273,45 @@ function initroute(app) { }) }); - app.get("/wdf/v1/rooms/" + "FAKEWDF" + "/*", (req, res) => { - var ticket = req.header("Authorization") - var xhr = new XMLHttpRequest(); - var n = req.url.lastIndexOf('/'); - var result = req.url.substr(0) - xhr.open('GET', prodwsurl + result, false); - xhr.setRequestHeader('X-SkuId'); - xhr.setRequestHeader('Authorization', ticket); - xhr.setRequestHeader('Content-Type', 'application/json'); - xhr.send(); - res.send(xhr.responseText); + app.get("/wdf/v1/rooms/" + "FAKEWDF" + "/*", async (req, res) => { + try { + const ticket = req.header("Authorization"); + const result = req.url; // This gets the full URL path including the FAKEWDF and additional path segments + + const response = await axios.get(prodwsurl + result, { + headers: { + 'X-SkuId': '', + 'Authorization': ticket, + 'Content-Type': 'application/json' + } + }); + + res.send(response.data); + } catch (error) { + console.error(error); + res.status(error.response ? error.response.status : 500).send(error.message); + } }); - - app.post("/wdf/v1/rooms/" + "FAKEWDF" + "/*", (req, res) => { - var ticket = req.header("Authorization") - var xhr = new XMLHttpRequest(); - var n = req.url.lastIndexOf('/'); - var result = req.url.substr(0) - xhr.open('POST', prodwsurl + result, false); - xhr.setRequestHeader('X-SkuId'); - xhr.setRequestHeader('Authorization', ticket); - xhr.setRequestHeader('Content-Type', 'application/json'); - xhr.send(JSON.stringify(req.body, null, 2)); - res.send(xhr.responseText); + + app.post("/wdf/v1/rooms/" + "FAKEWDF" + "/*", async (req, res) => { + try { + const ticket = req.header("Authorization"); + const result = req.url; // This gets the full URL path including the FAKEWDF and additional path segments + + const response = await axios.post(prodwsurl + result, req.body, { + headers: { + 'X-SkuId': '', + 'Authorization': ticket, + 'Content-Type': 'application/json' + } + }); + + res.send(response.data); + } catch (error) { + console.error(error); + res.status(error.response ? error.response.status : 500).send(error.message); + } }); + } module.exports = { initroute } \ No newline at end of file diff --git a/package.json b/package.json index 3e57e71..1993bb1 100644 --- a/package.json +++ b/package.json @@ -16,10 +16,8 @@ "express": "^4.19.2", "fs": "^0.0.1-security", "md5": "^2.3.0", - "mongoose": "^5.13.22", "pm2": "^5.3.0", - "request-country": "^0.1.2", - "xmlhttprequest": "^1.8.0" + "request-country": "^0.1.2" }, "engines": { "node": ">=16.0.0",