summaryrefslogtreecommitdiff
path: root/app/node_modules
diff options
context:
space:
mode:
Diffstat (limited to 'app/node_modules')
-rw-r--r--app/node_modules/okservices/oks3/index.js11
-rw-r--r--app/node_modules/okservices/oks3/upload.js78
2 files changed, 63 insertions, 26 deletions
diff --git a/app/node_modules/okservices/oks3/index.js b/app/node_modules/okservices/oks3/index.js
index 41ee3dc..60567e9 100644
--- a/app/node_modules/okservices/oks3/index.js
+++ b/app/node_modules/okservices/oks3/index.js
@@ -46,6 +46,7 @@ function OKS3(options) {
key: options.s3.key,
secret: options.s3.secret,
bucket: options.s3.bucket,
+ local: options.s3.local,
})
var express = options.express;
@@ -85,7 +86,7 @@ function OKS3(options) {
router.post('/audio', mult.single('audio'), function(req, res) {
d.run(function () {
- if (! options.s3.image.allowed) {
+ if (! options.s3.audio.allowed) {
return res.status(500).json({ error: "Audio uploading not permitted" })
}
@@ -113,7 +114,7 @@ function OKS3(options) {
router.post('/video', mult.single('video'), function(req, res) {
d.run(function () {
- if (! options.s3.image.allowed) {
+ if (! options.s3.video.allowed) {
return res.status(500).json({ error: "Video uploading not permitted" })
}
@@ -140,7 +141,7 @@ function OKS3(options) {
router.post('/file', mult.single('file'), function(req, res) {
d.run(function () {
- if (! options.s3.image.allowed) {
+ if (! options.s3.file.allowed) {
return res.status(500).json({ error: "File uploading not permitted" })
}
@@ -149,6 +150,10 @@ function OKS3(options) {
preserveFilename: options.s3.video.preserveFilename,
dirname: options.s3.dirname,
types: {
+ 'image/gif': 'gif',
+ 'image/jpeg': 'jpg',
+ 'image/jpg': 'jpg',
+ 'image/png': 'png',
'application/pdf': 'pdf',
'text/plain': 'txt',
'text/html': 'html',
diff --git a/app/node_modules/okservices/oks3/upload.js b/app/node_modules/okservices/oks3/upload.js
index 681b14b..5d5c635 100644
--- a/app/node_modules/okservices/oks3/upload.js
+++ b/app/node_modules/okservices/oks3/upload.js
@@ -1,6 +1,8 @@
+var fs = require('fs')
var knox = require('knox')
var uuid = require('node-uuid')
+var crypto = require('crypto')
var s3
@@ -15,11 +17,15 @@ var acceptableuploadTypes = {
module.exports = {}
module.exports.init = function (opt){
- s3 = knox.createClient({
- key: opt.key,
- secret: opt.secret,
- bucket: opt.bucket,
- })
+ if (opt.local) {
+ s3 = { local: opt.local }
+ } else {
+ s3 = knox.createClient({
+ key: opt.key,
+ secret: opt.secret,
+ bucket: opt.bucket,
+ })
+ }
}
module.exports.put = function (opt) {
@@ -28,10 +34,11 @@ module.exports.put = function (opt) {
var now = new Date()
var file = opt.file
+ // console.log("Received", file.originalname, file.mimetype)
var types = opt.types || acceptableuploadTypes
var extension = types[file.mimetype]
-
+
if (opt.filename) {
filename = opt.filename
}
@@ -60,24 +67,49 @@ module.exports.put = function (opt) {
opt.acceptable && opt.acceptable(err)
// console.log("upload >", remote_path)
- s3.putBuffer(file.buffer, remote_path, {
- 'Content-Length': file.size,
- 'Content-Type': file.mimetype,
- 'x-amz-acl': 'public-read'
- }, function(err, s3res) {
- if (err || s3res.statusCode !== 200) {
- console.error(err);
- if (s3res && s3res.resume) {
- s3res.resume()
+ if (s3.local) {
+ var hash = crypto.createHash("sha256").update(filename, "utf8").digest("hex")
+ var hash_path = hash.substr(0, 2)
+ fs.mkdir(s3.local.localPath + hash_path, function(error){
+ if (error && error.code !== "EEXIST") {
+ console.error("error creating directory")
+ console.error(error)
+ opt.unacceptable && opt.unacceptable(error)
+ return
+ }
+ var localPath = (s3.local.localPath + hash_path + "/" + filename).replace(/\/\//g, "/")
+ var remotePath = (s3.local.remotePath + hash_path + "/" + filename).replace(/\/\//g, "/")
+ fs.writeFile(localPath, file.buffer, {}, function(error){
+ if (error) {
+ console.error("error saving file")
+ console.error(error)
+ opt.unacceptable && opt.unacceptable(error)
+ return
+ }
+ opt.success && opt.success(remotePath)
+ });
+ })
+ } else {
+ s3.putBuffer(file.buffer, remote_path, {
+ 'Content-Length': file.size,
+ 'Content-Type': file.mimetype,
+ 'x-amz-acl': 'public-read'
+ }, function(err, s3res) {
+ if (err || s3res.statusCode !== 200) {
+ console.error(err);
+ if (s3res && s3res.resume) {
+ s3res.resume()
+ }
+ return;
}
- return;
- }
- var file_url = s3res.url || s3res.req.url
+ var file_url = s3res.url || s3res.req.url
- opt.success && opt.success(file_url)
- }).on('error', function(err, s3res){
- console.error(err)
- s3res && s3res.resume && s3res.resume()
- })
+ opt.success && opt.success(file_url)
+ }).on('error', function(err, s3res){
+ console.error(err)
+ s3res && s3res.resume && s3res.resume()
+ })
+ }
}
+