blob: ec79dfcd61b1db13fcf16f496e1d6298a7e99dfb [file] [log] [blame]
var express = require('express'),
multer = require('multer')
var path = require('path');
var fs = require('fs');
var docformats = require('../../../node/src/docformats');
docformats.options.binaryPath = path.resolve('../../../../../build/bin');
var app = express();
var dfwebserver = path.resolve(__dirname, '../../..');
var web = path.resolve(__dirname, '../../../../web');
app.get('/upload', function(req, res){
res.send('<html><head></head><body>\
<form method="POST" enctype="multipart/form-data">\
<input type="file" name="filefield"><br />\
<input type="submit">\
</form>\
</body></html>');
});
var multerOptions = {
dest: path.resolve(dfwebserver, 'uploads/'),
rename: function (fieldname, filename) {
return filename;
}
};
app.post('/upload',[ multer(multerOptions), function(req, res){
console.log(req.body) // form fields
console.log(req.files) // form files
//res.json(req.files).status(204).end()
res.send('<html><head></head><body>\
<a href="/get/' + req.files.filefield.name + '/">Navigate to this link to run dfconvert GET in the server\
</a>\
</body></html>');
}]);
function getInput(id) {
return path.resolve(dfwebserver, 'uploads', id);
}
function getOutput(id) {
var folder = path.resolve(dfwebserver, 'pool', id)
var parsed = path.parse(folder);
return path.resolve(folder, parsed.name + '.html');
}
function getDynamicResource(id, resource) {
var folder = path.resolve(dfwebserver, 'pool', id)
return path.resolve(folder, resource);
}
function getStaticResource(resource) {
return path.resolve(web, 'client', resource);
}
function sendFile(res, filename) {
if (fs.existsSync(filename)) {
res.sendFile(filename);
} else {
res.status(404).end(); // Not Found
}
}
app.get('/get/:id', function(req, res){
var input = getInput(req.params.id);
var abstract = getOutput(req.params.id);
try {
// This is required because DocFormat API throw an error
// when abstract is present in the filesystem
fs.unlinkSync(abstract);
} catch (ex) {
// do nothing
}
docformats.get(input, abstract);
sendFile(res, abstract);
});
app.get('/get/:id/*', function(req, res){
var staticResource = getStaticResource(req.params[0]);
var dynamicResource = getDynamicResource(req.params.id, req.params[0]);
if (fs.existsSync(staticResource)) {
res.sendFile(staticResource);
} else {
sendFile(res, dynamicResource);
}
});
app.listen(process.env.PORT || 8080);