cumstorm/src/uploadGJLevel.ts

72 lines
2.3 KiB
TypeScript

export{}; // fuck you ts, i have to do this to prevent "cannot redeclare block scoped variable"
const handleRequestsAt = ['uploadGJLevel21', 'uploadGJLevel20', 'uploadGJLevel19', 'uploadGJLevel'];
module.exports = (app): void => {
let uploadLevel = async (req, res) => {
let levels = await app.get('db').collection('levels')
.find({})
.toArray();
levels.sort((a, b) => b.id - a.id);
let levelID;
if (levels[0]) {
levelID = levels[0].id + 1;
} else {
levelID = 1;
}
console.log(req.body);
let udid = req.body.udid;
/*
if (udid != undefined && !isNaN(Number(udid)))
return res.status(200).send('-1');
*/
app.get('db').collection('levels').insertOne({
'name': req.body.levelName,
'id': levelID,
'levelData': req.body.levelString,
'extraData': req.body.extraString || '29_29_29_40_29_29_29_29_29_29_29_29_29_29_29_29',
'levelInfo': req.body.levelInfo || '0',
'timestamp': Date.now(),
'description': req.body.levelDesc,
'gameVersion': Number(req.body.gameVersion || 0),
'binaryVersion': Number(req.body.binaryVersion || 0),
'username': req.body.userName,
'version': Number(req.body.levelVersion),
'length': Number(req.body.levelLength),
// difference between audio_track and song_id is
// audio_track is official songs and song_id is newgrounds aka custom songs
'audioTrack': Number(req.body.audioTrack),
'songID': Number(req.body.songID),
'auto': false,
'password': Number(req.body.password || 0),
'original': Number(req.body.original || 0),
'twoPlayer': Boolean(Number(req.body.twoPlayer || 0)),
'objects': Number(req.body.objects || 0),
'coins': Number(req.body.coins || 0),
'requestedStars': Number(req.body.requestedStars || 0),
'secret': req.body.secret,
'userID': -1, // no user_id yet
'udid': udid, // ??? i have no idea what this is
'unlisted': Boolean(Number(req.body.unlisted || 0)),
'hasLDM': Boolean(Number(req.body.ldm || 0)),
// online stuff
'downloads': 0,
'likes': 0,
'difficulty': 0, // 0 = N/A 10 = EASY 20 = NORMAL 30 = HARD 40 = HARDER 50 = INSANE 50 = AUTO 50 = DEMON
'stars': 0,
'featured': false,
'epic': false,
'ratedCoins': false
});
res.status(200).send(String(levelID));
};
for (let i in handleRequestsAt)
app.post('/' + app.get('config').addtopath + 'database/' + handleRequestsAt[i] + '.php', uploadLevel);
};