Add legacy skin and cape routes, improve error handling
Introduces legacy routes for Minecraft skins and capes to support older endpoints. Enhances error handling in sessionsRepository for missing skins/capes, adds getActiveSkin and getActiveCape to sessionsService, and improves error logging in server.js.
This commit is contained in:
parent
80fb6c6cd4
commit
9b36c85974
@ -69,9 +69,14 @@ async function getActiveSkin(uuid) {
|
|||||||
`
|
`
|
||||||
const rows = await database.query(sql, [uuid])
|
const rows = await database.query(sql, [uuid])
|
||||||
const skin = rows[0]
|
const skin = rows[0]
|
||||||
|
if (!skin) {
|
||||||
|
throw new DefaultError(404, "Not found", "Not found")
|
||||||
|
}
|
||||||
return { code: 200, data: skin || null }
|
return { code: 200, data: skin || null }
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (error instanceof DefaultError) {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"])
|
logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"])
|
||||||
throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.")
|
throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.")
|
||||||
}
|
}
|
||||||
@ -87,9 +92,14 @@ async function getActiveCape(uuid) {
|
|||||||
`
|
`
|
||||||
const rows = await database.query(sql, [uuid])
|
const rows = await database.query(sql, [uuid])
|
||||||
const cape = rows[0]
|
const cape = rows[0]
|
||||||
|
if (!cape) {
|
||||||
|
throw new DefaultError(404, "Not found", "Not found")
|
||||||
|
}
|
||||||
return { code: 200, data: cape || null }
|
return { code: 200, data: cape || null }
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (error instanceof DefaultError) {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"])
|
logger.log("Internal Server Error".bold + " : " + error.toString(), ["MariaDB", "yellow"])
|
||||||
throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.")
|
throw new DefaultError(500, "Internal Server Error", "Please contact an administrator.")
|
||||||
}
|
}
|
||||||
|
|||||||
10
routes/legacy/MinecraftCloaks/[username].js
Normal file
10
routes/legacy/MinecraftCloaks/[username].js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const express = require("express")
|
||||||
|
const router = express.Router({ mergeParams: true })
|
||||||
|
const sessionsService = require("../../../services/sessionsService")
|
||||||
|
|
||||||
|
router.get("", async (req, res) => {
|
||||||
|
const cape = await sessionsService.getActiveCape({ username: req.params.username.replace(".png", "") })
|
||||||
|
return res.redirect(`/textures${cape.data.url}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
10
routes/legacy/MinecraftSkins/[username].js
Normal file
10
routes/legacy/MinecraftSkins/[username].js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const express = require("express")
|
||||||
|
const router = express.Router({ mergeParams: true })
|
||||||
|
const sessionsService = require("../../../services/sessionsService")
|
||||||
|
|
||||||
|
router.get("", async (req, res) => {
|
||||||
|
const cape = await sessionsService.getActiveSkin({ username: req.params.username.replace(".png", "") })
|
||||||
|
return res.redirect(`/textures${cape.data.url}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
10
routes/legacy/cloaks/[username].js
Normal file
10
routes/legacy/cloaks/[username].js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const express = require("express")
|
||||||
|
const router = express.Router({ mergeParams: true })
|
||||||
|
const sessionsService = require("../../../services/sessionsService")
|
||||||
|
|
||||||
|
router.get("", async (req, res) => {
|
||||||
|
const cape = await sessionsService.getActiveCape({ username: req.params.username.replace(".png", "") })
|
||||||
|
return res.redirect(`/textures${cape.data.url}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
10
routes/legacy/skins/[username].js
Normal file
10
routes/legacy/skins/[username].js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const express = require("express")
|
||||||
|
const router = express.Router({ mergeParams: true })
|
||||||
|
const sessionsService = require("../../../services/sessionsService")
|
||||||
|
|
||||||
|
router.get("", async (req, res) => {
|
||||||
|
const cape = await sessionsService.getActiveSkin({ username: req.params.username.replace(".png", "") })
|
||||||
|
return res.redirect(`/textures${cape.data.url}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
@ -149,7 +149,7 @@ app.all(/.*/, (req, res, next) => {
|
|||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
const statusCode = err.statusCode || err.code || 500
|
const statusCode = err.statusCode || err.code || 500
|
||||||
|
|
||||||
logger.log(req.originalUrl)
|
logger.error(`Error occured on: ${req.originalUrl.bold}`, ["API", "red"])
|
||||||
logger.error(err.message, ["API", "red"])
|
logger.error(err.message, ["API", "red"])
|
||||||
|
|
||||||
if (typeof err.serialize === "function") {
|
if (typeof err.serialize === "function") {
|
||||||
|
|||||||
@ -167,9 +167,37 @@ async function joinLegacyServer({ name, sessionId, serverId }) {
|
|||||||
return { code: 200, message: "OK" }
|
return { code: 200, message: "OK" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getActiveSkin({ username }) {
|
||||||
|
try {
|
||||||
|
const dbUser = await authRepository.getUser(username)
|
||||||
|
const activeSkin = await sessionRepository.getActiveSkin(dbUser.user.uuid)
|
||||||
|
return activeSkin
|
||||||
|
} catch (error) {
|
||||||
|
if (!(error instanceof DefaultError)) {
|
||||||
|
throw new DefaultError(400, "Bad Request", error.toString())
|
||||||
|
}
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getActiveCape({ username }) {
|
||||||
|
try {
|
||||||
|
const dbUser = await authRepository.getUser(username)
|
||||||
|
const activeCape = await sessionRepository.getActiveCape(dbUser.user.uuid)
|
||||||
|
return activeCape
|
||||||
|
} catch (error) {
|
||||||
|
if (!(error instanceof DefaultError)) {
|
||||||
|
throw new DefaultError(400, "Bad Request", error.toString())
|
||||||
|
}
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getProfile,
|
getProfile,
|
||||||
joinServer,
|
joinServer,
|
||||||
|
getActiveCape,
|
||||||
|
getActiveSkin,
|
||||||
hasJoinedServer,
|
hasJoinedServer,
|
||||||
joinLegacyServer,
|
joinLegacyServer,
|
||||||
getBlockedServers,
|
getBlockedServers,
|
||||||
|
|||||||
@ -523,6 +523,7 @@ module.exports = {
|
|||||||
getPlayerProperty,
|
getPlayerProperty,
|
||||||
addPlayerProperty,
|
addPlayerProperty,
|
||||||
updatePreferences,
|
updatePreferences,
|
||||||
|
uploadSkinFromUrl,
|
||||||
getSettingsSchema,
|
getSettingsSchema,
|
||||||
getPlayerBanStatus,
|
getPlayerBanStatus,
|
||||||
removeProfileAction,
|
removeProfileAction,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user