var MongoClient = require('mongodb').MongoClient; const AWS = require('aws-sdk'); const saveGameScore = (req, res) => { const url = process.env.MONGODB_URL; const dbName = process.env.MONGO_DB_NAME; const client = new MongoClient(url, { useUnifiedTopology: true }); client.connect((err) => { if (err) { console.error('Failed to connect to the server', err); return; } // console.log('Connected successfully to server'); const db = client.db(dbName); const collection = db.collection('gameData'); // const data = req.body; const { userId, gameName, gameID, gameTime, score,gameStar, screenShot } = req.body; const data = { userId: userId, gameName: gameName, gameID: gameID, gameTime: gameTime, score: score, gameStar:gameStar }; collection.insertOne(data, (err, result) => { if (err) { console.error('Failed to insert document', err); } else { // console.log('Document inserted with _id: ', result.insertedId); } client.close((err) => { if (err) { console.error('Failed to close connection', err); } else { // console.log('Connection closed'); const s3 = new AWS.S3({ accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, region: process.env.AWS_REGION }); if (screenShot != undefined) { // Upload image to S3 let base64Image = screenShot.split(";base64,").pop(); const buffer = Buffer.from(base64Image, 'base64'); const s3Params = { Bucket: process.env.S3_BUCKET_NAME, Key: `images/${result.insertedId}.png`, // Change the file extension to .png Body: buffer, ContentEncoding: 'base64', ContentType: 'image/jpeg' // Change the content type to image/png }; try { const data = s3.upload(s3Params).promise(); console.log(`File uploaded successfully at ${data.Location}`); } catch (err) { console.error(err); } }; res.send(result.insertedId); } }); }); }); }; module.exports = saveGameScore;