const express = require('express') const http = require('http') const path = require('path') const multer = require('multer')() const upload = require('./util/upload') const bodyParser = require('body-parser') const compression = require('compression') // const multer = require('multer') // const upload = multer({ dest: 'uploads/' }) export const app = new express() export const server = http.createServer(app) app.disable('x-powered-by') app.use(bodyParser.json({ limit: '100mb', })) app.use(bodyParser.urlencoded({ extended: false, limit: '100mb', })) app.use(express.query()) app.use(express.static(path.join(__dirname, '../../public'))) app.use(compression()) export const io = require('socket.io').listen(server) import { api } from './util/api' const api_folders = api(app, 'folder') const api_files = api(app, 'file') const api_datasets = api(app, 'dataset') const api_tasks = api(app, 'task') upload.init() // app.use('/upload', require('./upload')) app.post('/api/folder/:id/upload/', multer.array('file'), function (req, res, next){ if (! req.files || ! req.files.length) { console.log('no files') res.json({ error: "no files" }) return } console.log('got', req.files.length, 'files') var folder_id = req.params.id var dirname = process.env.S3_PATH + '/data/' + folder_id + '/' var promises = req.files.map((file) => { // console.log(file) return new Promise( (resolve, reject) => { upload.put({ file: file, preserveFilename: true, sanitizeFilename: req.body.generated !== 'true', dirname: dirname, unacceptable: function(err){ console.log('unacceptable') reject(err) }, success: function(url, filename){ console.log("file >", filename, url) var data = { folder_id, name: filename, url, size: file.size, datatype: file.mimetype.split('/')[0], activity: req.body.activity || 'url', module: req.body.module, epoch: parseInt(req.body.epoch) || 0, generated: req.body.generated === 'true', processed: req.body.processed === 'true', // username: req.user.get('username'), } api_files.create(data).then( (db_file) => { console.log(db_file) // console.log(req.body) // if this came from an automated command... if (req.body.should_relay === "true" || req.body.generated === "true") { console.log('relaying...') const client = require('./bridge').client console.log("__________\n_____________--\n") console.log("__________\n_______asdfdsaf______--\n") console.log("__________\n_____________--\n") console.log(require('./bridge')) console.log("__________\n_____________--\n") console.log("__________\n________clieieieie_____--\n") console.log("__________\n_____________--\n") console.log("__________\n_____________--\n") console.log(require('./bridge').client) console.log("__________\n_____________--\n") console.log("__________\n_____________--\n") console.log("__________\n_____________--\n") console.log("__________\n_____________--\n") console.log("__________\n_____________--\n") client.emit('api_res', JSON.stringify({ type: 'create', datatype: 'file', data: db_file })) } resolve(db_file) }).catch( (err) => { console.warn(err) res.sendStatus(500) }) } }) }) }) Promise.all(promises).then(files => { res.json({ files }) next() }).catch(err => { console.log(err) }) }) // require('./bridge') function serve_index(req, res) { res.sendFile(path.join(__dirname, '../../public', 'index.html')) } app.get('/:module/:mode/:id/', serve_index) app.get('/:module/:mode/', serve_index) app.get('/system/', serve_index) app.get('/dashboard/', serve_index) app.get('/', serve_index) server.listen(process.env.EXPRESS_PORT, () => { console.log('Cortex remote listening on http://localhost:' + server.address().port) })