require('dotenv').config() const express = require('express') const http = require('http') const path = require('path') const api = require('./util/api') const multer = require('multer')() const upload = require('./util/upload') const bodyParser = require('body-parser') // const multer = require('multer') // const upload = multer({ dest: 'uploads/' }) export const app = express() export const server = http.createServer(app) server.listen(process.env.EXPRESS_PORT, () => { console.log('Cortex remote listening on http://localhost:' + server.address().port) }) app.disable('x-powered-by') app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) app.use(express.query()) app.use(express.static()) app.use(express.static(path.join(__dirname, '../public'), { extensions: ['html'] })) upload.init() const api_folders = api(app, 'folder') const api_files = api(app, 'file') const api_jobs = api(app, 'job') const api_tasks = api(app, 'task') // app.use('/upload', require('./upload')) app.post('/folders/:id', multer.array('file'), function (req, res, next){ if (! req.files || ! req.files.length) { res.json({ error: "no files" }) return } var thread_id = res.thread.get('id') var dirname = process.env.S3_PATH + '/data/' + thread_id + '/' var promises = req.files.map((file) => { return new Promise( (resolve, reject) => { upload.put({ file: file, preserveFilename: true, dirname: dirname, unacceptable: function(err){ reject(err) }, success: function(url){ console.log("file >", url) var data = { folder_id: req.params.id, name: fn, size: file.size, generated: false, processed: false, thread: res.thread.get('id'), username: req.user.get('username'), filename: file.originalname, date: util.now(), size: file.size, privacy: false, storage: process.env.S3_BUCKET, } const fn = file.originalname api_files.create({ // table.string('username') }).then( (file) => { resolve(file) }).catch( (err) => { console.warn(err) res.sendStatus(500) }) } }) }) }) Promise.all(promises).then(files => { res.json({ files }) next() }).catch(err => { console.log(err) }) }) app.get('/:module/:mode/', serve_index) app.get('/', serve_index) function serve_index(req, res) { res.sendFile(path.join(__dirname, '../../public', 'index.html')) }