1 | import { Router, RequestHandler } from 'express';
|
2 | import { join } from 'path';
|
3 | import { rename } from 'fs';
|
4 | import * as multer from 'multer';
|
5 |
|
6 | import * as settings from './settings';
|
7 | import { build } from './pubsub';
|
8 |
|
9 | const nconf = require.main.require('nconf');
|
10 |
|
11 |
|
12 | const version: string = require(join(__dirname, '../../package.json')).version;
|
13 |
|
14 | export 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 | }
|