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 | |
| parent | 0767045a3b210ee65a4c8c90b5dc42a6e54e0d1f (diff) | |
noo api
Diffstat (limited to 'bucky')
| -rw-r--r-- | bucky/app/api.js (renamed from bucky/app/router.js) | 116 | ||||
| -rw-r--r-- | bucky/app/index.js | 18 | ||||
| -rw-r--r-- | bucky/app/pages.js | 116 | ||||
| -rw-r--r-- | bucky/util/federate.js (renamed from bucky/app/federate.js) | 37 |
4 files changed, 169 insertions, 118 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/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"), + }) + }) +} diff --git a/bucky/app/federate.js b/bucky/util/federate.js index 51b34f6..e94c722 100644 --- a/bucky/app/federate.js +++ b/bucky/util/federate.js @@ -1,5 +1,8 @@ var fetch = require('node-fetch') +const readFile = require('fs-readfile-promise') var db = require('../db') +var upload = require('../util/upload') +var mime = require('mime-types') module.exports = { @@ -57,8 +60,9 @@ module.exports = { return db.getFilesForThread(req.params.id) }).then(files => { var promises = files.map(file => { + storeFile(file) file.set('thread', thread_id) - send("file", file) + return send("file", file) }) return promises }).then( () => { @@ -80,6 +84,37 @@ module.exports = { }, }).then((res) => {return res.json()}) } + function storeFile(file){ + // since for now we are essentially backing up local files, + // upload them directly to s3 + const bucky_fn = file.get('thread') + '/' + file.get('filename') + readFile('public/data/' + bucky_fn) + .then(buffer => { + const remote_path = '/bucky/data/' + bucky_fn + upload.client().putBuffer(buffer, remote_path, { + 'Content-Length': buffer.length, + 'Content-Type': mime.lookup(file.get('filename')), + 'x-amz-acl': 'public-read' + }, function(err, s3res) { + if (err || s3res.statusCode !== 200) { + console.error(err); + if (s3res && s3res.resume) { + s3res.resume() + } + return; + } + var file_url = s3res.url || s3res.req.url + + console.log(file_url) + }).on('error', function(err, s3res){ + console.error(err) + s3res && s3res.resume && s3res.resume() + }) + }).catch(e => { + console.error(e) + + }) + } } }
\ No newline at end of file |
