Skip to content

Commit 233d675

Browse files
committed
updated analytics response
1 parent 0525e21 commit 233d675

File tree

4 files changed

+206
-35
lines changed

4 files changed

+206
-35
lines changed

Diff for: app.js

+32-19
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,53 @@
11
const express = require("express");
22
const logger = require("morgan");
3-
var cors = require('cors')
4-
require('dotenv').config();
3+
var cors = require("cors");
4+
require("dotenv").config();
55

66
const app = express();
7+
const http = require("http");
8+
const server = http.createServer(app);
9+
const { Server } = require("socket.io");
10+
const io = new Server(server);
711

812
app.use(logger("dev"));
913
app.use(express.static(__dirname + "/public"));
1014
app.use(express.json());
1115
app.use(express.urlencoded({ extended: true }));
12-
app.use(cors())
16+
app.use(cors());
1317

1418
const connectOptions = {
1519
useNewUrlParser: true,
1620
useUnifiedTopology: true,
1721
keepAlive: true,
18-
useCreateIndex: true
22+
useCreateIndex: true,
1923
};
2024

21-
const db = require('./models');
25+
const db = require("./models");
2226

2327
db.mongoose
24-
.connect(process.env.MONGO_URI, connectOptions)
25-
.then(() => {
26-
console.log('Successfully connect to MongoDB.');
27-
})
28-
.catch((err) => {
29-
console.error('Connection error', err);
30-
process.exit();
28+
.connect(process.env.MONGO_URI, connectOptions)
29+
.then(() => {
30+
console.log("Successfully connect to MongoDB.");
31+
})
32+
.catch((err) => {
33+
console.error("Connection error", err);
34+
process.exit();
35+
});
36+
37+
const shortRoutes = require("./routes/shortRoutes");
38+
const analyticsRoutes = require("./routes/analyticsRoutes");
39+
40+
app.use("", [shortRoutes, analyticsRoutes]);
41+
42+
io.path("/test");
43+
44+
io.on("connection", (socket) => {
45+
console.log("a user connected");
46+
socket.on("disconnect", () => {
47+
console.log("user disconnected");
48+
});
3149
});
3250

33-
const shortRoutes = require('./routes/shortRoutes');
34-
const analyticsRoutes = require('./routes/analyticsRoutes');
35-
36-
app.use('', [shortRoutes, analyticsRoutes]);
37-
38-
app.listen(process.env.PORT || 3000, function () {
39-
console.log("Server is running on Port: " + (process.env.PORT || 3000));
51+
app.listen(process.env.PORT || 3001, function () {
52+
console.log("Server is running on Port: " + (process.env.PORT || 3001));
4053
});

Diff for: controller/analyticsController.js

+30-16
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,58 @@ const URLs = db.url;
44
const Analytics = db.analytics;
55

66
exports.getAllCount = async (req, res) => {
7-
let doc = await URLs.aggregate([{ $group: { _id: '', count: { $sum: '$count' } } }]);
7+
let doc = await URLs.aggregate([
8+
{ $group: { _id: "", count: { $sum: "$count" } } },
9+
]);
810
if (doc) {
911
res.send(doc);
12+
} else {
13+
res.send({ statusTxt: "DB Error", statusCode: 500 });
1014
}
11-
else {
12-
res.send({ statusTxt: 'DB Error', statusCode: 500 });
13-
}
14-
}
15+
};
1516

1617
let obfuscateIp = (ip) => {
1718
if (ip.length < 17) {
18-
ip = ip.split('.');
19+
ip = ip.split(".");
1920
ip = ip.splice(0, ip.length - 1);
20-
ip = ip.join('.');
21+
ip = ip.join(".");
2122
return ip + ".***";
2223
}
2324

24-
ip = ip.split(':');
25+
ip = ip.split(":");
2526
// console.log(ip)
2627
ip = ip.splice(0, ip.length - 1);
27-
ip = ip.join(':');
28+
ip = ip.join(":");
2829
return ip + ".****";
29-
}
30+
};
3031

3132
exports.getUrlAnalytics = async (req, res) => {
3233
const uId = req.query.uId || null;
3334

3435
if (!uId) {
35-
res.send({ pls: "Please don't exploit my resource", message: "No URL ID is provided" });
36+
res.send({
37+
pls: "Please don't exploit my resource",
38+
message: "No URL ID is provided",
39+
});
3640
}
3741

38-
let doc = await Analytics.findOne({ urlId: uId }, '-_id -__v -urlId');
42+
let doc = await Analytics.findOne({ urlId: uId }, "-_id -__v -urlId");
43+
let urlDoc = await URLs.findById(uId);
3944

4045
if (!doc) {
4146
res.status(404).send({ message: "Invalid Analytics ID" });
4247
}
4348

44-
let obfuscatedIp = doc.ip.map(data => obfuscateIp(data));
45-
doc.ip = obfuscatedIp
46-
res.send(doc);
47-
}
49+
let obfuscatedIp = doc.ip.map((data) => obfuscateIp(data));
50+
doc.ip = obfuscatedIp;
51+
const obj = {};
52+
53+
obj["originalUrl"] = urlDoc.originalUrl;
54+
obj["shortUrl"] = urlDoc.shortUrl;
55+
obj["ip"] = doc.ip;
56+
obj["os"] = doc.os;
57+
obj["platform"] = doc.platform;
58+
obj["browser"] = doc.browser;
59+
60+
res.status(200).send(obj);
61+
};

Diff for: package-lock.json

+143
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"mongodb": "^3.6.2",
1313
"mongoose": "^5.10.7",
1414
"morgan": "^1.10.0",
15+
"socket.io": "^4.1.2",
1516
"valid-url": "^1.0.9"
1617
},
1718
"devDependencies": {},

0 commit comments

Comments
 (0)