From dc33bc33d63dfc624a370ef9a071d769a72642d7 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Mon, 12 Aug 2019 23:20:56 -0400 Subject: [PATCH 1/3] Added ability to set a username that is used when returning the stats. --- index.js | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 2af14d16..4ba31cf8 100644 --- a/index.js +++ b/index.js @@ -83,7 +83,7 @@ function getIP(req) { } //add the post function -app.get('/api/postVideoSponsorTimes', function (req, res) { +app.post('/api/postVideoSponsorTimes', function (req, res) { let videoID = req.query.videoID; let startTime = req.query.startTime; let endTime = req.query.endTime; @@ -251,6 +251,36 @@ app.get('/api/viewedVideoSponsorTime', function (req, res) { res.sendStatus(200); }); +//To set your username for the stats view +app.get('/api/setUsername', function (req, res) { + let userID = req.query.userID; + let userName = req.query.username; + + if (userID == undefined || userName == undefined) { + //invalid request + res.sendStatus(400); + return; + } + + //hash the userID + userID = getHash(userID); + + //check if username is already set + db.prepare("SELECT count(*) as count FROM userNames WHERE userID = ?").get(userID, function(err, row) { + if (err) console.log(err); + + if (row.count > 0) { + //already exists, update this row + db.prepare("UPDATE userNames SET userName = ? WHERE userID = ?").run(userName, userID); + } else { + //add to the db + db.prepare("INSERT INTO userNames VALUES(?, ?)").run(userID, userName); + } + + res.sendStatus(200); + }); +}); + //Gets all the views added up for one userID //Useful to see how much one user has contributed app.get('/api/getViewsForUser', function (req, res) { @@ -307,9 +337,14 @@ app.get('/api/getTopUsers', function (req, res) { let totalSubmissions = []; let minutesSaved = []; - db.prepare("SELECT userID, COUNT(*) as totalSubmissions, SUM(views) as viewCount, SUM((endTime - startTime) / 60 * views) as minutesSaved FROM sponsorTimes WHERE votes > -1 GROUP BY userID ORDER BY " + sortBy + " DESC LIMIT 50").all(function(err, rows) { + db.prepare("SELECT sponsorTimes.userID as userID, COUNT(*) as totalSubmissions, SUM(views) as viewCount, SUM((sponsorTimes.endTime - sponsorTimes.startTime) / 60 * sponsorTimes.views) as minutesSaved, userNames.userName as userName FROM sponsorTimes LEFT JOIN userNames ON sponsorTimes.userID=userNames.userID WHERE sponsorTimes.votes > -1 GROUP BY sponsorTimes.userID ORDER BY " + sortBy + " DESC LIMIT 50").all(function(err, rows) { for (let i = 0; i < rows.length; i++) { - userNames[i] = rows[i].userID; + if (rows[i].userName != null) { + userNames[i] = rows[i].userName; + } else { + userNames[i] = rows[i].userID; + } + viewCounts[i] = rows[i].viewCount; totalSubmissions[i] = rows[i].totalSubmissions; minutesSaved[i] = rows[i].minutesSaved; From 4079419fa8998a49117a4bfd3f7501ab14be6f7a Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Mon, 12 Aug 2019 23:31:44 -0400 Subject: [PATCH 2/3] Added API endpoint to get the username --- index.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 4ba31cf8..9a34b97e 100644 --- a/index.js +++ b/index.js @@ -252,7 +252,7 @@ app.get('/api/viewedVideoSponsorTime', function (req, res) { }); //To set your username for the stats view -app.get('/api/setUsername', function (req, res) { +app.post('/api/setUsername', function (req, res) { let userID = req.query.userID; let userName = req.query.username; @@ -281,6 +281,35 @@ app.get('/api/setUsername', function (req, res) { }); }); +//get what username this user has +app.get('/api/getUsername', function (req, res) { + let userID = req.query.userID; + + if (userID == undefined) { + //invalid request + res.sendStatus(400); + return; + } + + //hash the userID + userID = getHash(userID); + + db.prepare("SELECT userName FROM userNames WHERE userID = ?").get(userID, function(err, row) { + if (err) console.log(err); + + if (row != null) { + res.send({ + userName: row.userName + }); + } else { + //no username yet, just send back the userID + res.send({ + userName: userID + }); + } + }); +}); + //Gets all the views added up for one userID //Useful to see how much one user has contributed app.get('/api/getViewsForUser', function (req, res) { From 6b88719cf6bc21a1b78b4a76026cdcd95ccf1894 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Mon, 12 Aug 2019 23:43:05 -0400 Subject: [PATCH 3/3] Reverted postVideoSponsors back to get method --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 9a34b97e..b1d23c9a 100644 --- a/index.js +++ b/index.js @@ -83,7 +83,7 @@ function getIP(req) { } //add the post function -app.post('/api/postVideoSponsorTimes', function (req, res) { +app.get('/api/postVideoSponsorTimes', function (req, res) { let videoID = req.query.videoID; let startTime = req.query.startTime; let endTime = req.query.endTime;