summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2017-12-10 17:06:40 +0100
committerJules Laplace <julescarbon@gmail.com>2017-12-10 17:06:40 +0100
commitd9b9383118302aff6d73856175d7362d8b1463c5 (patch)
tree24b991ef9aa94819d5071c534c7e7d2394d80fa0
parent26f8a74aee3a14563d2e802b62ee70e4f4a5bcd8 (diff)
env
-rw-r--r--.sample-env5
-rw-r--r--bucky/app/bucky.js51
-rw-r--r--bucky/app/index.js8
-rw-r--r--package-lock.json62
-rw-r--r--package.json1
-rw-r--r--public/assets/js/lib/views/index/threadform.js3
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
},