var auth = require('../util/auth') var middleware = require('../util/middleware') var fortune = require('../db/fortune') var bucky = require('./bucky') var db = require('../db') var util = require('../util/util') var search = require('../search/middleware') 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, // ensure thread privacy bucky.createComment, function(req, res){ res.json({ comment: res.comment }) }) 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("/search/", middleware.ensureAuthenticated, function(req, res){ res.render("pages/search", {title: "search" }) } ) app.get("/api/search", middleware.ensureAuthenticated, search.search, search.getThreads, search.getComments, search.getFiles, search.logQuery, search.success ) 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 } ) }