summaryrefslogtreecommitdiff
path: root/bucky/app
diff options
context:
space:
mode:
Diffstat (limited to 'bucky/app')
-rw-r--r--bucky/app/api.js (renamed from bucky/app/router.js)116
-rw-r--r--bucky/app/federate.js85
-rw-r--r--bucky/app/index.js18
-rw-r--r--bucky/app/pages.js116
4 files changed, 133 insertions, 202 deletions
diff --git a/bucky/app/router.js b/bucky/app/api.js
index 7380a22..5635ce9 100644
--- a/bucky/app/router.js
+++ b/bucky/app/api.js
@@ -7,72 +7,10 @@ var db = require('../db')
var bucky = require('./bucky')
var search = require('../search/middleware')
var fortune = require('../db/fortune')
-var federate = require('./federate')
-module.exports = function(app){
- app.all('*', middleware.ensureLocals)
-
- auth.init()
-
- app.get("/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.redirect('/index')
- })
- app.get("/index", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/index", {
- title: fortune("titles"),
- hoot_text: fortune("hoots"),
- })
- })
- app.get("/index/:keyword", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/index", {
- title: fortune("titles"),
- hoot_text: fortune("hoots"),
- })
- })
- app.get("/keywords", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/keywords", {})
- })
- app.get("/details/:id", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/details", {})
- })
- app.get("/details/:id/settings", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/details", {})
- })
-
- app.get("/post/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/post", {title: "Start a new thread"})
- }
- )
- app.get("/post/:keyword",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/post", {title: "Start a new thread"})
- }
- )
- app.get("/comment/:id/edit", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/comment_form", {title: "Edit comment"})
- })
-
- app.get("/profile",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile", {title: "profile for " + util.sanitize(req.user.get('username'))})
- })
- app.get("/profile/:username",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile", {title: "profile for " + util.sanitize(req.params.username)})
- })
- app.get("/profile/:username/edit",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile_form", {title: "edit your profile"})
- })
+module.exports = { route }
+function route (app){
/* users */
app.get("/api/user/:username",
@@ -231,11 +169,6 @@ module.exports = function(app){
/* search */
- app.get("/search/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/search", {title: "search" })
- })
app.get("/api/search",
middleware.ensureAuthenticated,
search.search,
@@ -281,52 +214,9 @@ module.exports = function(app){
})
})
+
/* mail */
- app.get("/mail/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/mailbox", {title: "your inbox" })
- })
- app.get("/mail/compose",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/compose", {
- title: "new message",
- subject: fortune("subjects"),
- verb: "wrote",
- })
- })
- app.get("/mail/:box",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/mailbox", { title: "your " + util.sanitize(req.params.box) })
- })
- app.get("/mail/compose/:username",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/compose", {
- title: "new message",
- subject: fortune("subjects"),
- verb: "wrote",
- })
- })
- app.get("/mail/read/:id",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/message", {
- title: "read message"
- })
- })
- app.get("/mail/reply/:id",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/compose", {
- title: "reply to message",
- subject: fortune("subjects"),
- verb: fortune("mail-verbs"),
- })
- })
app.get("/api/mailbox/:box",
middleware.ensureAuthenticated,
bucky.ensureMailboxes,
diff --git a/bucky/app/federate.js b/bucky/app/federate.js
deleted file mode 100644
index 51b34f6..0000000
--- a/bucky/app/federate.js
+++ /dev/null
@@ -1,85 +0,0 @@
-var fetch = require('node-fetch')
-var db = require('../db')
-
-module.exports = {
-
- route: (app) => {
- app.put('/raw/import/thread/', importRaw('thread', 'Thread'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/keyword/', importRaw('keyword', 'Keyword'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/file/', importRaw('file', 'File'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/comment/', importRaw('comment', 'Comment'), (req, res) => res.send({ status: 'ok', el: res.el }))
-
- app.get('/raw/export/thread/:id', exportThread, (req, res) => res.send({ status: 'ok' }))
- app.get('/raw/export/keyword/:keyword', exportKeyword, (req, res) => res.send({ status: 'ok' }))
-
- function importRaw (type, model) {
- return (req, res, next) => {
- console.log('importing', type, req.body.id)
- delete req.body.id
- db[model].forge(req.body).save().then((el) => {
- res.el = el;
- next()
- }).catch(e => {
- console.error(e)
- next()
- })
- }
- }
- function exportKeyword (req, res, next) {
- console.log('export keyword', req.params.keyword)
- db.getKeyword(req.params.keyword).then(keyword => {
- send("keyword", keyword)
- return db.getThreadsForKeyword(req.params.keyword)
- }).then(threads => {
- var promises = threads.map(thread => {
- exportThread({ params: { id: thread.get('id') } }, res, function(){})
- })
- return Promise.all(promises)
- }).then( () => {
- next()
- })
- }
- function exportThread (req, res, next) {
- var thread_id
- return db.getThread(req.params.id).then(thread => {
- return send("thread", thread)
- }).then(json => {
- thread_id = json.el.id
- console.log('got thread id', thread_id)
- return db.getCommentsForThread(req.params.id)
- }).then(comments => {
- var promises = comments.map(comment => {
- comment.set('thread', thread_id)
- send("comment", comment)
- })
- return Promise.all(promises)
- }).then( () => {
- return db.getFilesForThread(req.params.id)
- }).then(files => {
- var promises = files.map(file => {
- file.set('thread', thread_id)
- send("file", file)
- })
- return promises
- }).then( () => {
- next()
- }).catch(e => {
- console.error(e)
- next()
- })
- }
- function send(type, data){
- console.log('sending', type, data.get('id'))
- var json = data.toJSON()
- return fetch("https://bucky.asdf.us/raw/import/" + type, {
- method: 'PUT',
- body: JSON.stringify(json),
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- },
- }).then((res) => {return res.json()})
- }
-
- }
-} \ No newline at end of file
diff --git a/bucky/app/index.js b/bucky/app/index.js
index 19435da..63a285d 100644
--- a/bucky/app/index.js
+++ b/bucky/app/index.js
@@ -18,7 +18,11 @@ var upload = require('../util/upload')
var app, server
-var federate = require('./federate')
+var federate = require('../util/federate')
+var auth = require('../util/auth.js')
+var middleware = require('../util/middleware.js')
+var api = require('./api.js')
+var pages = require('./pages.js')
var site = module.exports = {}
site.init = function(){
@@ -50,6 +54,7 @@ site.init = function(){
saveUninitialized: false,
}))
+ upload.init()
federate.route(app)
app.use(csurf({
@@ -66,9 +71,13 @@ site.init = function(){
console.log('Bucky listening at http://' + process.env.HOST_NAME + ':%s', server.address().port)
})
- upload.init()
+ auth.init()
+
+ app.all('*', middleware.ensureLocals)
- site.route(app)
+ api.route(app)
+ pages.route(app)
+ auth.route(app)
app.set('view engine', 'ejs')
app.set('views', path.join(__dirname, '../../views'))
@@ -80,4 +89,5 @@ site.init = function(){
}
}
-site.route = require('./router')
+site.api = require('./api')
+site.pages = require('./pages')
diff --git a/bucky/app/pages.js b/bucky/app/pages.js
new file mode 100644
index 0000000..ebc9317
--- /dev/null
+++ b/bucky/app/pages.js
@@ -0,0 +1,116 @@
+var middleware = require('../util/middleware')
+var util = require('../util/util')
+
+var fortune = require('../db/fortune')
+
+module.exports = { route }
+
+function route (app){
+ app.get("/",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.redirect('/index')
+ })
+ app.get("/index", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/index", {
+ title: fortune("titles"),
+ hoot_text: fortune("hoots"),
+ })
+ })
+ app.get("/index/:keyword", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/index", {
+ title: fortune("titles"),
+ hoot_text: fortune("hoots"),
+ })
+ })
+ app.get("/keywords", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/keywords", {title: "Bucky's keywords"})
+ })
+ app.get("/details/:id", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/details", {})
+ })
+ app.get("/details/:id/settings", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/details", {})
+ })
+
+ app.get("/post/",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/post", {title: "Start a new thread"})
+ }
+ )
+ app.get("/post/:keyword",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/post", {title: "Start a new thread"})
+ }
+ )
+ app.get("/comment/:id/edit", middleware.ensureAuthenticated, function(req, res){
+ res.render("pages/comment_form", {title: "Edit comment"})
+ })
+
+ app.get("/profile",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/profile", {title: "profile for " + util.sanitize(req.user.get('username'))})
+ })
+ app.get("/profile/:username",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/profile", {title: "profile for " + util.sanitize(req.params.username)})
+ })
+ app.get("/profile/:username/edit",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/profile_form", {title: "edit your profile"})
+ })
+ app.get("/search/",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/search", {title: "search" })
+ })
+ app.get("/mail/",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/mailbox", {title: "your inbox" })
+ })
+ app.get("/mail/compose",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/compose", {
+ title: "new message",
+ subject: fortune("subjects"),
+ verb: "wrote",
+ })
+ })
+ app.get("/mail/:box",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/mailbox", { title: "your " + util.sanitize(req.params.box) })
+ })
+ app.get("/mail/compose/:username",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/compose", {
+ title: "new message",
+ subject: fortune("subjects"),
+ verb: "wrote",
+ })
+ })
+ app.get("/mail/read/:id",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/message", {
+ title: "read message"
+ })
+ })
+ app.get("/mail/reply/:id",
+ middleware.ensureAuthenticated,
+ function(req, res){
+ res.render("pages/compose", {
+ title: "reply to message",
+ subject: fortune("subjects"),
+ verb: fortune("mail-verbs"),
+ })
+ })
+}