]>
Commit | Line | Data |
---|---|---|
345da516 C |
1 | import * as express from 'express' |
2 | import { PLUGIN_GLOBAL_CSS_PATH } from '../initializers/constants' | |
2c053942 | 3 | import { basename, join } from 'path' |
345da516 C |
4 | import { RegisteredPlugin } from '../lib/plugins/plugin-manager' |
5 | import { servePluginStaticDirectoryValidator } from '../middlewares/validators/plugins' | |
6 | ||
7 | const pluginsRouter = express.Router() | |
8 | ||
9 | pluginsRouter.get('/global.css', | |
2c053942 | 10 | servePluginGlobalCSS |
345da516 C |
11 | ) |
12 | ||
2c053942 | 13 | pluginsRouter.get('/:pluginName/:pluginVersion/static/:staticEndpoint(*)', |
345da516 C |
14 | servePluginStaticDirectoryValidator, |
15 | servePluginStaticDirectory | |
16 | ) | |
17 | ||
2c053942 | 18 | pluginsRouter.get('/:pluginName/:pluginVersion/client-scripts/:staticEndpoint(*)', |
345da516 C |
19 | servePluginStaticDirectoryValidator, |
20 | servePluginClientScripts | |
21 | ) | |
22 | ||
23 | // --------------------------------------------------------------------------- | |
24 | ||
25 | export { | |
26 | pluginsRouter | |
27 | } | |
28 | ||
29 | // --------------------------------------------------------------------------- | |
30 | ||
2c053942 C |
31 | function servePluginGlobalCSS (req: express.Request, res: express.Response) { |
32 | return res.sendFile(PLUGIN_GLOBAL_CSS_PATH) | |
33 | } | |
34 | ||
345da516 C |
35 | function servePluginStaticDirectory (req: express.Request, res: express.Response) { |
36 | const plugin: RegisteredPlugin = res.locals.registeredPlugin | |
37 | const staticEndpoint = req.params.staticEndpoint | |
38 | ||
2c053942 C |
39 | const [ directory, ...file ] = staticEndpoint.split('/') |
40 | ||
41 | const staticPath = plugin.staticDirs[directory] | |
345da516 C |
42 | if (!staticPath) { |
43 | return res.sendStatus(404) | |
44 | } | |
45 | ||
2c053942 C |
46 | const filepath = file.join('/') |
47 | return res.sendFile(join(plugin.path, staticPath, filepath)) | |
345da516 C |
48 | } |
49 | ||
50 | function servePluginClientScripts (req: express.Request, res: express.Response) { | |
51 | const plugin: RegisteredPlugin = res.locals.registeredPlugin | |
52 | const staticEndpoint = req.params.staticEndpoint | |
53 | ||
2c053942 C |
54 | const file = plugin.clientScripts[staticEndpoint] |
55 | if (!file) { | |
56 | return res.sendStatus(404) | |
57 | } | |
58 | ||
59 | return res.sendFile(join(plugin.path, staticEndpoint)) | |
345da516 | 60 | } |