first commit

This commit is contained in:
Arkadyuti Sarkar
2024-06-18 16:01:46 +05:30
commit 33e17fde20
14 changed files with 4932 additions and 0 deletions

1
src/config/constants.js Normal file
View File

@@ -0,0 +1 @@
export const PORT = 4400;

0
src/db/models.js Normal file
View File

5
src/handlers/pingTest.js Normal file
View File

@@ -0,0 +1,5 @@
const homeHandler = (req, res) => {
res.send("Home");
};
export default homeHandler;

91
src/index.js Normal file
View File

@@ -0,0 +1,91 @@
import "dotenv/config";
import express from "express";
import path from "path";
import logger from "morgan";
import cookieParser from "cookie-parser";
import bodyParser from "body-parser";
import helmet from "helmet";
import compression from "compression";
import fileUpload from "express-fileupload";
import routes from "./routes/index";
import {PORT} from "./config/constants";
var app = express();
app.use(compression()); //Compress all routes
app.use(helmet());
app.use(fileUpload());
// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jade");
app.set("port", process.env.PORT || PORT);
app.use(
logger("dev", {
skip: function (req) {
if (req.url == "/ping") {
return true;
} else {
return false;
}
}
})
);
app.use(bodyParser.json({ limit: '10mb' }));
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "dist")));
// Enable CORS
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
next();
});
app.use("/", routes);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error("Not Found");
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get("env") === "development") {
app.use(function (err, req, res) {
res.status(err.status || 500);
res.render("error", {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res) {
res.status(err.status || 500);
res.render("error", {
message: err.message,
error: {}
});
});
app.listen(process.env.PORT || PORT, () =>
console.log(`App listening on http://localhost:${process.env.PORT || PORT}`)
);
export default app;

49
src/routes/index.js Normal file
View File

@@ -0,0 +1,49 @@
import express from "express";
import Ping from "../handlers/pingTest";
import fs from "fs";
import AWS from "aws-sdk";
const router = express.Router();
/* GET home page. */
router.get("/ping", (req, res) => {
Ping(req, res);
});
const s3 = new AWS.S3({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION,
});
console.log("AWS S3 Configured", process.env);
const uploadBase64Image = (base64Image, bucketName, key) => {
const buffer = Buffer.from(base64Image, 'base64');
const params = {
Bucket: bucketName,
Key: key,
Body: buffer,
ContentEncoding: "base64",
ContentType: "image/jpeg",
};
try {
const data = s3.upload(params).promise();
console.log(`File uploaded successfully at ${data.Location}`);
} catch (err) {
console.error(err);
}
};
router.post("/save-data", (req, res) => {
const { screenShot } = req.body || {};
let base64Image = screenShot.split(";base64,").pop();
uploadBase64Image(base64Image, "bs-game-data", "image_new2.jpg");
res.send("Home");
});
export default router;

19
src/utils/helpers.js Normal file
View File

@@ -0,0 +1,19 @@
export const IsJsonString = str => {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
};
export const invalidCustomParam = (req, res, paramater, message) => {
if (!req.query[paramater] || req.query[paramater] === "undefined" || req.query[paramater] === "null") {
res.status(400);
res.send({
message: message ? message : "Invalid paramaters"
});
return true;
}
return false;
};

4
src/views/error.jade Normal file
View File

@@ -0,0 +1,4 @@
block content
h1= message
h2= error.status
pre #{error.stack}