From 9d9e426c51e1b292b73988e8eb3b4e6a47130bf0 Mon Sep 17 00:00:00 2001 From: Esben Gade Hellmuth Date: Wed, 12 Feb 2020 22:58:03 +0100 Subject: [PATCH] Add message endpoint + logout endpoint + control script --- control.sh | 2 +- minitwit.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/control.sh b/control.sh index 63bbb48..506aaff 100755 --- a/control.sh +++ b/control.sh @@ -8,7 +8,7 @@ if [ $1 = "init" ]; then python -c"from minitwit import init_db;init_db()" elif [ $1 = "start" ]; then echo "Starting minitwit..." - nohup python minitwit.py > /tmp/out.log 2>&1 & + nohup nodejs minitwit.js > /tmp/out.log 2>&1 & echo $! > /tmp/minitwit.pid elif [ $1 = "stop" ]; then echo "Stopping minitwit..." diff --git a/minitwit.js b/minitwit.js index 7b115f9..f1b41e9 100644 --- a/minitwit.js +++ b/minitwit.js @@ -68,6 +68,36 @@ app.get('/public', async function(req, res) { }); }); +// Add message handler +app.post('/add_message', async function(req, res) { + const user_id = req.session.user_id; + const text = req.body.text; + if(!user_id) { + return res.status(401).send(); + } else { + await insertOne( + 'INSERT INTO message(author_id, text, pub_date) VALUES(?, ?, ?)', + [user_id, text, Date.now()]) + let messages = await selectAll( + `SELECT message.*, user.* FROM message, user + WHERE message.author_id = user.user_id AND ( + user.user_id = ? OR + user.user_id IN ( + SELECT whom_id FROM follower + WHERE who_id = ?)) + ORDER BY message.pub_date DESC LIMIT ?`, + [req.session.user_id, req.session.user_id, PER_PAGE] + ); + return res.render('pages/timeline', { + flashes: ['Your message was recorded'], + session_user_id: req.session.user_id, + session_username: req.session.username, + messages: messages, + myFeed: true + }); + } +}); + // Register page app.get('/register', function(req, res) { res.render('pages/register', { @@ -159,6 +189,15 @@ app.post('/login', async function(req, res) { }); }); +// Logout +app.get('/logout', function(req, res) { + req.session.user_id = null; + req.session.username = null; + res.render('pages/timeline', { + flashes: ['You were logged out'] + }); +}); + // User timeline page app.get('/:username', async function(req, res) { const { username } = req.params;