33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { LocalStorage, Route, Server } from '../../../class';
|
|
|
|
export default class Root extends Route {
|
|
constructor(server: Server) {
|
|
super(server);
|
|
this.conf = {
|
|
path: '/',
|
|
};
|
|
}
|
|
|
|
public bind() {
|
|
this.router.get('/m/:id', async (req, res) => {
|
|
try {
|
|
const id = req.params.id.split('.')[0];
|
|
const file = await this.server.client.db.File.findOne({ identifier: id });
|
|
if (!file) return res.status(404).json({ code: this.constants.codes.NOT_FOUND, message: this.constants.messages.NOT_FOUND });
|
|
if (file.downloaded >= file.maxDownloads) return res.status(404).json({ code: this.constants.codes.NOT_FOUND, message: this.constants.messages.NOT_FOUND });
|
|
if (req.query.d === '1') {
|
|
res.contentType('text/html');
|
|
const decomp = await LocalStorage.decompress(file.data);
|
|
res.status(200).send(decomp);
|
|
} else {
|
|
res.contentType(file.mimeType);
|
|
res.status(200).send(file.data);
|
|
}
|
|
return await file.updateOne({ $inc: { downloaded: 1 } });
|
|
} catch (err) {
|
|
return this.handleError(err, res);
|
|
}
|
|
});
|
|
}
|
|
}
|