Recv/lib/api/upload.js

60 lines
1.2 KiB
JavaScript
Raw Normal View History

const config = require('../../config');
const express = require('express');
const jwt = require('jsonwebtoken');
function checkAuthorization(req, res, onVerified)
{
if (!req.headers.authorization || req.headers.authorization.split(' ')[0] !== 'Bearer')
{
res.sendStatus(400);
return;
}
var token = req.headers.authorization.split(' ')[1];
jwt.verify(token, config.jwtSecret, (err, decoded) =>
{
if (err)
{
res.sendStatus(403);
return;
}
onVerified(decoded);
});
}
module.exports = (app, repository) =>
{
// Upload API
app.post('/complete', (req, res) =>
{
if (!req.body.files)
{
res.sendStatus(400);
return;
}
checkAuthorization(req, res, async (decoded) =>
{
var expiration = null; // TODO set expiration properties
var uploadId = await repository.uploads.addUpload(decoded.userId, req.body.files, expiration);
res.send({ id: uploadId });
});
});
// Tus upload
const uploadApp = express();
uploadApp.all('*', (req, res) =>
{
checkAuthorization(req, res, (decoded) =>
{
tusServer.handle(req, res);
});
});
app.use('/upload', uploadApp);
}