UNPKG

2.02 kBPlain TextView Raw
1import { Router, RequestHandler } from 'express';
2import { join } from 'path';
3import { rename } from 'fs';
4import * as multer from 'multer';
5
6import * as settings from './settings';
7import { build } from './pubsub';
8
9const nconf = require.main.require('nconf');
10
11// eslint-disable-next-line import/no-dynamic-require
12const version: string = require(join(__dirname, '../../package.json')).version;
13
14export default function controllers({ router, middleware }: {
15 router: Router;
16 middleware: { admin: { [key: string]: RequestHandler } };
17}) {
18 const renderAdmin: RequestHandler = (req, res, next) => {
19 settings.get().then((sets) => setImmediate(() => {
20 res.render('admin/plugins/emoji', {
21 version,
22 settings: sets,
23 });
24 }), (err) => setImmediate(next, err));
25 };
26
27 router.get('/admin/plugins/emoji', middleware.admin.buildHeader, renderAdmin);
28 router.get('/api/admin/plugins/emoji', renderAdmin);
29
30 const saveAdmin: RequestHandler = (req, res, next) => {
31 const data = JSON.parse(req.query.settings as string);
32 settings.set(data).then(
33 () => setImmediate(() => res.send('OK')),
34 (err) => setImmediate(next, err)
35 );
36 };
37 router.get('/api/admin/plugins/emoji/save', saveAdmin);
38
39 const adminBuild: RequestHandler = (req, res, next) => {
40 build().then(
41 () => setImmediate(() => res.send('OK')),
42 (err) => setImmediate(next, err)
43 );
44 };
45 router.get('/api/admin/plugins/emoji/build', adminBuild);
46
47 const uploadEmoji: RequestHandler = (req, res, next) => {
48 if (!req.file) {
49 res.sendStatus(400);
50 return;
51 }
52
53 const fileName = req.body.fileName;
54 rename(req.file.path, join(nconf.get('upload_path'), 'emoji', fileName), (err) => {
55 if (err) {
56 next(err);
57 } else {
58 res.sendStatus(200);
59 }
60 });
61 };
62
63 const upload = multer({
64 dest: join(nconf.get('upload_path'), 'emoji'),
65 });
66
67 router.post('/api/admin/plugins/emoji/upload', upload.single('emojiImage'), uploadEmoji);
68}