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); };