diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-12-15 09:12:14 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-12-15 09:12:14 +0100 |
| commit | ead7e4c6b383f53c2beb66f29510a457dc0b6ed8 (patch) | |
| tree | c8215921c017a38f0b6f759bcd2cb115771dfa22 /bucky/app | |
| parent | 0767045a3b210ee65a4c8c90b5dc42a6e54e0d1f (diff) | |
noo api
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.js | 85 | ||||
| -rw-r--r-- | bucky/app/index.js | 18 | ||||
| -rw-r--r-- | bucky/app/pages.js | 116 |
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"), + }) + }) +} |
