Files
pdfer/server/index.js
2018-02-01 01:23:58 +01:00

54 lines
1.4 KiB
JavaScript

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const templates = require('./templates');
const renderer = require('./renderer');
const store = require('./store');
const { getPdfPath } = require('./utils');
app.use(bodyParser.json());
app.options('/api/pdf/generate/:template');
app.post('/api/pdf/generate/:template', (req, res) => {
const templateName = req.params.template;
const options = req.body;
templates.get(templateName, options)
.then(renderer)
.then(id => {
const storeData = Object.assign({}, options, {
id,
created: new Date().toISOString()
});
return store
.add(storeData)
.then(() => id);
})
.then(id => {
res.send({id: id});
res.end();
})
.catch((err) => {
console.error('Error:', err, 'for', req.url);
res.sendStatus(500).end(err);
});
});
app.get('/api/pdf/latest', (req, res) => {
store
.list()
.then(results => res.json(results))
.catch(err => res.sendStatus(500).end(err));
});
app.options('/api/pdf/:id');
app.get('/api/pdf/:id', (req, res) => {
const {id} = req.params;
res.sendFile(getPdfPath(id));
});
app.use(express.static('../client/build'));
app.listen(5000);