diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-12-10 17:06:40 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-12-10 17:06:40 +0100 |
| commit | d9b9383118302aff6d73856175d7362d8b1463c5 (patch) | |
| tree | 24b991ef9aa94819d5071c534c7e7d2394d80fa0 | |
| parent | 26f8a74aee3a14563d2e802b62ee70e4f4a5bcd8 (diff) | |
env
| -rw-r--r-- | .sample-env | 5 | ||||
| -rw-r--r-- | bucky/app/bucky.js | 51 | ||||
| -rw-r--r-- | bucky/app/index.js | 8 | ||||
| -rw-r--r-- | package-lock.json | 62 | ||||
| -rw-r--r-- | package.json | 1 | ||||
| -rw-r--r-- | public/assets/js/lib/views/index/threadform.js | 3 |
6 files changed, 118 insertions, 12 deletions
diff --git a/.sample-env b/.sample-env index 9a57f81..cf59061 100644 --- a/.sample-env +++ b/.sample-env @@ -3,4 +3,7 @@ DB_NAME=bucky3 DB_USER=carbon DB_PASS=argon HOST_NAME=5.k - +S3_KEY= +S3_SECRET= +S3_PATH=/bucky/data/ +S3_BUCKET= diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js index 00730c5..5198400 100644 --- a/bucky/app/bucky.js +++ b/bucky/app/bucky.js @@ -1,6 +1,7 @@ +var _ = require('lodash') var db = require('../db') var util = require('../util/util') -var _ = require('lodash') +var upload = require('../util/upload') var bucky = module.exports = { @@ -93,14 +94,6 @@ var bucky = module.exports = { next() }) }, - verifyFilesOrComment: function (req, res, next){ - var hasComment = req.body.comment && req.body.comment.length - var hasFile = req.files && req.files.length - if (! hasComment && ! hasFile) { - return res.sendStatus(400) - } - next() - }, /* DETAILS */ @@ -177,6 +170,18 @@ var bucky = module.exports = { }) }, + /* POSTING */ + + verifyFilesOrComment: function (req, res, next){ + var hasComment = req.body.comment && req.body.comment.length + var hasFile = req.files && req.files.length + if (! hasComment && ! hasFile) { + console.log(">>> NO FILES OR COMMENT") + return res.sendStatus(400) + } + next() + }, + /* COMMENTS */ createOptionalComment: function(req, res, next){ @@ -202,7 +207,33 @@ var bucky = module.exports = { next() }) }, - + + /* FILES */ + + createOptionalFiles: function(req, res, next){ + if (! req.files || ! req.files.length) { + return next() + } + bucky.createFiles(req, res, next) + }, + createFiles: function (req, res, next){ + if (! req.files || ! req.files.length) { + res.json({ error: "no files" }) + return + } + var data = { + thread: res.thread.get('id'), + parent_id: req.body.parent_id || -1, + username: req.user.get('username'), + date: util.now(), + comment: req.body.comment, + } + db.createComment(data).then(function(comment){ + res.comment = comment + next() + }) + }, + /* MAIL */ ensureMailboxes: function (req, res, next){ diff --git a/bucky/app/index.js b/bucky/app/index.js index 95a11a8..cbf7388 100644 --- a/bucky/app/index.js +++ b/bucky/app/index.js @@ -13,6 +13,7 @@ var favicon = require('serve-favicon') var passport = require('passport') var sessionstore = require('sessionstore') var session = require('express-session') +var upload = require('../util/upload') var app, server @@ -55,6 +56,13 @@ site.init = function(){ console.log('Bucky listening at http://5.k:%s', server.address().port) }) + upload.init({ + key: process.env.S3_KEY, + secret: process.env.S3_SECRET, + bucket: process.env.S3_BUCKET, + path: process.env.S3_PATH, + }) + site.route(app) } diff --git a/package-lock.json b/package-lock.json index f72a252..b49027b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -362,6 +362,14 @@ } } }, + "debug": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.5.tgz", + "integrity": "sha1-9yQSF0MPmd7EwrRz6rkiKOh0wqw=", + "requires": { + "ms": "2.0.0" + } + }, "dotenv": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-1.2.0.tgz", @@ -1134,11 +1142,28 @@ } } }, + "knox": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/knox/-/knox-0.9.2.tgz", + "integrity": "sha1-NzZZNmniTwJP2vcjtqHcSv2DmnE=", + "requires": { + "debug": "1.0.5", + "mime": "2.0.3", + "once": "1.4.0", + "stream-counter": "1.0.0", + "xml2js": "0.4.19" + } + }, "lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" }, + "mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-TrpAd/vX3xaLPDgVRm6JkZwLR0KHfukMdU2wTEbqMDdCnY6Yo3mE+mjs9YE6oMNw2QRfXVeBEYpmpO94BIqiug==" + }, "mongodb": { "version": "2.0.42", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.42.tgz", @@ -1559,6 +1584,14 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -1605,6 +1638,11 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "serve-favicon": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", @@ -2494,6 +2532,30 @@ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } + }, + "stream-counter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-1.0.0.tgz", + "integrity": "sha1-kc8lac5NxQYf6816yyY5SloRR1E=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.4" + } + }, + "xmlbuilder": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz", + "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=" } } } diff --git a/package.json b/package.json index 993f57e..a6b1cd7 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "express-json": "^1.0.0", "express-session": "^1.11.3", "knex": "^0.8.6", + "knox": "^0.9.2", "lodash": "^3.10.1", "mongodb": "^2.0.42", "multer": "^1.0.3", diff --git a/public/assets/js/lib/views/index/threadform.js b/public/assets/js/lib/views/index/threadform.js index 2ea6988..0fd149c 100644 --- a/public/assets/js/lib/views/index/threadform.js +++ b/public/assets/js/lib/views/index/threadform.js @@ -6,6 +6,7 @@ var ThreadForm = FormView.extend({ }, action: "/api/thread", + method: "POST", initialize: function(){ this.__super__.initialize.call(this) @@ -39,7 +40,7 @@ var ThreadForm = FormView.extend({ var comment = this.$("[name=comment]").val() var files = this.$("[name=files]").val() if ((! comment || ! comment.length) && ! files) { - errors.push("Please enter a comment.") + errors.push("Please enter a comment or add some files.") } return errors.length ? errors : null }, |
