69 lines
2.7 KiB
JavaScript
69 lines
2.7 KiB
JavaScript
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;
|
|
|