diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-12-27 12:48:06 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-12-27 12:48:06 +0100 |
| commit | 994f212275f71cc48c4938f0e0cc1fa0dc4eee38 (patch) | |
| tree | b30fd4a635b1a8a04ee4975a67e77aecde4eb22c /lib | |
| parent | 1fac54a69a4fd21b28953f2073904cbd3aee8577 (diff) | |
| parent | 4d66be70dde0b6918291d70b08b50bc952d7052a (diff) | |
shader-saving endpoint
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/db/index.js | 4 | ||||
| -rw-r--r-- | lib/index.js | 46 | ||||
| -rw-r--r-- | lib/upload.js | 10 |
3 files changed, 40 insertions, 20 deletions
diff --git a/lib/db/index.js b/lib/db/index.js index e6a9d78..9720235 100644 --- a/lib/db/index.js +++ b/lib/db/index.js @@ -33,6 +33,6 @@ db.getRandom = function () { db.createImage = function(url){ return new Image({ url: url }).save() } -db.createShaderImage = function(url){ - return new ShaderImage({ url: url }).save() +db.createShaderImage = function(data){ + return new ShaderImage(data).save() } diff --git a/lib/index.js b/lib/index.js index 8c089f5..6bdb722 100644 --- a/lib/index.js +++ b/lib/index.js @@ -21,7 +21,6 @@ var upload = require("./upload") var site = module.exports = {} site.init = function(){ app = express() - app.use('/p', express.static(path.join(__dirname, '../public'))) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) @@ -39,6 +38,11 @@ site.init = function(){ res.json(img) }) }) + app.get("/p/get/", function(req, res){ + db.getLatest().then(function(img){ + res.json(img) + }) + }) app.get("/p/get/latest", function(req, res){ db.getLatest().then(function(img){ res.json(img) @@ -55,30 +59,37 @@ site.init = function(){ }) }) app.post("/p/upload", multer_upload.single('image'), function(req, res){ - upload.put("image", req.file, { - unacceptable: function(err){ - res.json({ error: err }) - }, - success: function(url){ - db.createImage(url).then(function(image){ - res.json(image) - }) - } - }) + upload.put("image", req.file, { + unacceptable: function(err){ + res.json({ error: err }) + }, + success: function(url){ + db.createImage(url).then(function(image){ + res.json(image) + }) + } + }) }) /* shaderblaster / asciiblaster apis */ app.post("/cgi-bin/im/shader/upload", multer_upload.single('qqfile'), function(req, res){ + var now = Math.floor(Date.now() / 1000) + var filename = sanitize(req.body.filename) + '_' + now + '.' + upload.getExtension() + var path = '/im/ab/' upload.put("shader", req.file, { - + filename, path, unacceptable: function(err){ res.json({ error: err }) }, success: function(url){ db.createShaderImage({ - username: req.body.username, - tag: req.body.tag, - url, + // date, name, dir, newfile, tag, remote_addr + date: now, + name: sanitize(req.body.username), + dir: 'ab', + newfile: filename, + tag: sanitize(req.body.tag) || 'plop', + remote_addr: req.ip || '127.0.0.1', }).then(function(image){ res.json(image) }) @@ -86,4 +97,9 @@ site.init = function(){ }) }) + /* public urls last */ + app.use('/p/', express.static(path.join(__dirname, '../public'))) } + +function sanitize (s){ return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") } + diff --git a/lib/upload.js b/lib/upload.js index f0ea132..82ea9b5 100644 --- a/lib/upload.js +++ b/lib/upload.js @@ -15,6 +15,10 @@ var acceptableuploadTypes = { 'image/png': 'png' } +module.exports.getExtension = function(file) { + return acceptableuploadTypes[file.mimetype] +} + module.exports.put = function (key, file, opt) { var fileSize, fileType, filename var err @@ -22,10 +26,10 @@ module.exports.put = function (key, file, opt) { var ts = moment().format('YYYYMMDD') - var extension = acceptableuploadTypes[file.mimetype] - filename = crypto.createHash('md5').update(file.buffer).digest('hex') + "." + extension; + var extension = this.getExtension(file) + filename = opt.filename || crypto.createHash('md5').update(file.buffer).digest('hex') + "." + extension; - var remote_path = process.env.S3_DIR + filename + var remote_path = (opt.path || process.env.S3_DIR) + filename if (! extension) { err = "Unacceptable filetype" |
