//import {Request, Response} from "express"; const express = require('express'); const fs = require('fs'); const app = express(); const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser'); const jwt = require('jsonwebtoken'); const expressJwt = require('express-jwt'); const AdvancableBuffer = require('./backend/utilities/AdvancableBuffer.js'); const gbxHeader = require('./backend/trackmania-replays/gbx-header.js'); // handling CORS app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "http://localhost:4200"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.use(bodyParser.json()); app.route('/api/login').post(loginRoute); const RSA_PRIVATE_KEY = fs.readFileSync('./private.key'); const RSA_PUBLIC_KEY = fs.readFileSync('./public.key'); const checkIfAuthenticated = expressJwt({ secret: RSA_PUBLIC_KEY }); /*export */function loginRoute(req, res) { const email = req.body.email const password = req.body.password; if (validateEmailAndPassword(email, password)) { const userId = findUserIdForEmail(email); const jwtBearerToken = jwt.sign({}, RSA_PRIVATE_KEY, { algorithm: 'RS256', expiresIn: 120, subject: userId }); res.status(200).json({ idToken: jwtBearerToken, expiresIn: 120 }); } else { // send status 401 Unauthorized res.sendStatus(401); } } //app.route('/api/session/create').get(checkIfAuthenticated, ) const upload = require('./backend/routes/upload-replay'); app.get('/api/seasons', (req, res) => { seasons = [{ id: 1, seasonName: "Season 1", seasonTag: "Post Winter Blues", seasonCardImage: "", seasonHeaderImage: "", seasonStartDate: "", seasonSendDate: "", seasonId: "", seasonDesc: "", }] res.json({seasons: seasons}); }); app.get('/api/seasons/:id', (req, res) => { data = { details: { id: 1, seasonName: "Season 1", seasonTag: "Post Winter Blues", seasonCardImage: "", seasonHeaderImage: "", seasonStartDate: "", seasonSendDate: "", seasonId: "", seasonDesc: "", }, standings: [{ position: 1, points: 4, user: { realName: "Dan H", gamerHandle: "Quildra", } }, { position: 2, points: 2, user: { realName: "Dan Mc", gamerHandle: "Mini-Quildra", } }, ], weeks:[{ id: "1", map: "bob", mapImg: "bob.jpg", entries: [ { position: 1, runTime: 4.0, user: { realName: "Dan H", gamerHandle: "Quildra", } } ] }] } res.json({data: data}); }); // route for handling requests from the Angular client app.post('/api/upload-replay', upload.single('file'), (req, res) => { let file = req.file; console.log("File uploaded: ", req.file); fs.readFile(file.path, function(err, buffer) { buff = new AdvancableBuffer(buffer); header = new gbxHeader().parse(buffer); }) }); app.listen(3000, () => { console.log('Server listening on port 3000'); });