const subscriptionRoutes = require('express').Router(); subscriptionRoutes.get('/subscribe/:subreddit', (req, res, next) => { let subreddit = req.params.subreddit; let subbed = req.cookies.subbed_subreddits; let back = req.query.b; if (!subreddit) return res.redirect('/'); if (!subbed || !Array.isArray(subbed)) subbed = []; if (!subbed.includes(subreddit)) subbed.push(subreddit); res.cookie('subbed_subreddits', subbed, { maxAge: 365 * 24 * 60 * 60 * 1000, httpOnly: true, }); if (!back) return res.redirect('/r/' + subreddit); else { back = back.replace(/,/g, '+').replace(/§1/g, '&'); return res.redirect(back); } }); subscriptionRoutes.get( '/import_subscriptions/:subreddits', (req, res, next) => { let subreddits = req.params.subreddits; let subbed = req.cookies.subbed_subreddits; let back = req.query.b; if (!subreddits) return res.redirect('/'); if (!subbed || !Array.isArray(subbed)) subbed = []; subreddits = subreddits.split('+'); for (var i = 0; i < subreddits.length; i++) { if (!subbed.includes(subreddits[i])) subbed.push(subreddits[i]); } res.cookie('subbed_subreddits', subbed, { maxAge: 365 * 24 * 60 * 60 * 1000, httpOnly: true, }); if (!back) return res.redirect('/r/' + subreddits); else { back = back.replace(/,/g, '+').replace(/ /g, '+'); return res.redirect(back); } } ); subscriptionRoutes.get('/unsubscribe/:subreddit', (req, res, next) => { let subreddit = req.params.subreddit; let subbed = req.cookies.subbed_subreddits; let back = req.query.b; if (!subreddit || !subbed || !Array.isArray(subbed)) { res.clearCookie('subbed_subreddits'); return res.redirect('/'); } var index = subbed.indexOf(subreddit); if (index !== -1) subbed.splice(index, 1); if (subbed.length <= 0) res.clearCookie('subbed_subreddits'); else res.cookie('subbed_subreddits', subbed, { maxAge: 365 * 24 * 60 * 60 * 1000, httpOnly: true, }); if (!back) return res.redirect('/r/' + subreddit); else { back = back.replace(/,/g, '+').replace(/§1/g, '&'); return res.redirect(back); } }); module.exports = subscriptionRoutes;