var auth = require('./auth') var middleware = require('./middleware') var fortune = require('./fortune') var bucky = require('./bucky') var db = require('./db') var util = require('./util') module.exports = function(app){ app.all('*', middleware.ensureLocals) auth.init() app.get("/", middleware.ensureAuthenticated, function(req, res){ res.redirect('/index') }) app.get("/login", function(req, res){ res.render("pages/login", { title: "login" }) }) app.get("/index", middleware.ensureAuthenticated, function(req, res){ res.render("pages/index", { title: fortune("titles"), hoot_text: fortune("hoots"), }) }) app.get("/details/:id", middleware.ensureAuthenticated, function(req, res){ res.render("pages/details", {}) }) app.post("/api/login", auth.loggedInLocal) app.get("/api/index", bucky.ensureLastlog, middleware.ensureAuthenticated, bucky.ensureLatestThreads, bucky.ensureCommentCountsForThreads, bucky.ensureFileCountsForThreads, bucky.ensureKeywordsForThreads, bucky.ensureHootbox, function(req, res){ res.json({ threads: res.threads, hootbox: res.hootbox, lastlog: res.lastlog, }) } ) app.get("/api/thread/:id", middleware.ensureAuthenticated, bucky.ensureThread, bucky.ensureKeywordForThread, bucky.ensureCommentsForThread, bucky.ensureFilesForThread, function(req, res){ res.json({ thread: res.thread, comments: res.comments, files: res.files, keyword: res.keyword, }) } ) app.post("/api/thread", middleware.ensureAuthenticated, function(req, res){ // make a new thread }) app.post("/api/thread/:id/comment", middleware.ensureAuthenticated, bucky.ensureThread, function(req, res){ if (!req.params.id) return res.sendStatus(500) var comment = { thread: req.params.id, parent_id: req.body.parent_id || -1, username: req.user.get('username'), date: Math.round(+(new Date) / 1000), comment: req.body.comment, hidden: false, } db.createComment(comment).then(function(c){ res.json(comment) }) }) app.post("/api/thread/:id/file", middleware.ensureAuthenticated, bucky.ensureThread, function(req, res){ // add comments and files }) app.delete("/api/thread/:id", middleware.ensureAuthenticated, function(req, res){ // delete a thread }) app.put("/api/comment/:id", middleware.ensureAuthenticated, function(req, res){ // edit a comment }) app.delete("/api/comment/:id", middleware.ensureAuthenticated, function(req, res){ // delete a comment }) app.get("/api/keyword/:keyword", middleware.ensureAuthenticated, bucky.ensureKeyword, bucky.ensureThreadsForKeyword, bucky.ensureCommentCountsForThreads, bucky.ensureFileCountsForThreads, bucky.ensureKeywordsForThreads, function(req, res){ res.json({ keyword: res.keyword, threads: res.threads, }) } ) app.get("/mail/", middleware.ensureAuthenticated, function(req, res){ res.render("pages/mailbox", {title: "inbox" }) } ) app.get("/mail/:box", middleware.ensureAuthenticated, function(req, res){ res.render("pages/mailbox", { title: util.sanitize(req.params.box) }) } ) app.get("/message/:id", middleware.ensureAuthenticated, function(req, res){ res.render("pages/message", { title: util.sanitize(req.params.box) }) } ) app.get("/api/mailbox/:box", middleware.ensureAuthenticated, bucky.ensureMailboxes, bucky.ensureMailboxCounts, bucky.ensureMessages, function(req, res){ res.json({ user: { id: req.user.get("id"), username: req.user.get("username") }, messages: res.messages, boxes: res.boxes, }) } ) app.get("/api/message/:id", middleware.ensureAuthenticated, bucky.ensureMessage, function(req, res){ res.json({ message: res.message, }) }) app.post("/mail/", middleware.ensureAuthenticated, function(req, res){ // send new mail } ) }