aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared
diff options
context:
space:
mode:
Diffstat (limited to 'shared')
-rw-r--r--shared/core-utils/plugins/hooks.ts35
-rw-r--r--shared/extra-utils/server/plugins.ts7
-rw-r--r--shared/extra-utils/server/servers.ts3
3 files changed, 28 insertions, 17 deletions
diff --git a/shared/core-utils/plugins/hooks.ts b/shared/core-utils/plugins/hooks.ts
index 047c04f7b..60f4130f5 100644
--- a/shared/core-utils/plugins/hooks.ts
+++ b/shared/core-utils/plugins/hooks.ts
@@ -8,25 +8,30 @@ function getHookType (hookName: string) {
8 return HookType.STATIC 8 return HookType.STATIC
9} 9}
10 10
11async function internalRunHook (handler: Function, hookType: HookType, param: any, onError: (err: Error) => void) { 11async function internalRunHook <T>(handler: Function, hookType: HookType, result: T, params: any, onError: (err: Error) => void) {
12 let result = param
13
14 try { 12 try {
15 const p = handler(result) 13 if (hookType === HookType.FILTER) {
14 const p = handler(result, params)
15
16 if (isPromise(p)) result = await p
17 else result = p
18
19 return result
20 }
16 21
17 switch (hookType) { 22 // Action/static hooks do not have result value
18 case HookType.FILTER: 23 const p = handler(params)
19 if (isPromise(p)) result = await p 24
20 else result = p 25 if (hookType === HookType.STATIC) {
21 break 26 if (isPromise(p)) await p
27
28 return undefined
29 }
22 30
23 case HookType.STATIC: 31 if (hookType === HookType.ACTION) {
24 if (isPromise(p)) await p 32 if (isCatchable(p)) p.catch(err => onError(err))
25 break
26 33
27 case HookType.ACTION: 34 return undefined
28 if (isCatchable(p)) p.catch(err => onError(err))
29 break
30 } 35 }
31 } catch (err) { 36 } catch (err) {
32 onError(err) 37 onError(err)
diff --git a/shared/extra-utils/server/plugins.ts b/shared/extra-utils/server/plugins.ts
index 7a5c5344b..2302208a8 100644
--- a/shared/extra-utils/server/plugins.ts
+++ b/shared/extra-utils/server/plugins.ts
@@ -201,6 +201,10 @@ function getPluginPackageJSON (server: ServerInfo, npmName: string) {
201 return readJSON(path) 201 return readJSON(path)
202} 202}
203 203
204function getPluginTestPath (suffix = '') {
205 return join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test' + suffix)
206}
207
204export { 208export {
205 listPlugins, 209 listPlugins,
206 listAvailablePlugins, 210 listAvailablePlugins,
@@ -213,5 +217,6 @@ export {
213 getPluginRegisteredSettings, 217 getPluginRegisteredSettings,
214 getPackageJSONPath, 218 getPackageJSONPath,
215 updatePluginPackageJSON, 219 updatePluginPackageJSON,
216 getPluginPackageJSON 220 getPluginPackageJSON,
221 getPluginTestPath
217} 222}
diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts
index 9167ebe5b..40cf7f0f3 100644
--- a/shared/extra-utils/server/servers.ts
+++ b/shared/extra-utils/server/servers.ts
@@ -171,7 +171,8 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
171 thumbnails: `test${server.internalServerNumber}/thumbnails/`, 171 thumbnails: `test${server.internalServerNumber}/thumbnails/`,
172 torrents: `test${server.internalServerNumber}/torrents/`, 172 torrents: `test${server.internalServerNumber}/torrents/`,
173 captions: `test${server.internalServerNumber}/captions/`, 173 captions: `test${server.internalServerNumber}/captions/`,
174 cache: `test${server.internalServerNumber}/cache/` 174 cache: `test${server.internalServerNumber}/cache/`,
175 plugins: `test${server.internalServerNumber}/plugins/`
175 }, 176 },
176 admin: { 177 admin: {
177 email: `admin${server.internalServerNumber}@example.com` 178 email: `admin${server.internalServerNumber}@example.com`