X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fplugins%2Fregister-helpers.ts;h=1aaef36068486a892208a37db43b7660d1aa01a2;hb=f50bff17f5b69c576960360857e25224cea13c0a;hp=acca9309a717fbccd1afac6712ccd36d2444ef3b;hpb=41fb13c330de629df2d23379209e79c7af0f2e9a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/plugins/register-helpers.ts b/server/lib/plugins/register-helpers.ts index acca9309a..1aaef3606 100644 --- a/server/lib/plugins/register-helpers.ts +++ b/server/lib/plugins/register-helpers.ts @@ -1,4 +1,5 @@ import express from 'express' +import { Server } from 'http' import { logger } from '@server/helpers/logger' import { onExternalUserAuthenticated } from '@server/lib/auth/external-auth' import { VideoConstantManagerFactory } from '@server/lib/plugins/video-constant-manager-factory' @@ -8,7 +9,8 @@ import { RegisterServerAuthExternalResult, RegisterServerAuthPassOptions, RegisterServerExternalAuthenticatedResult, - RegisterServerOptions + RegisterServerOptions, + RegisterServerWebSocketRouteOptions } from '@server/types/plugins' import { EncoderOptionsBuilder, @@ -17,10 +19,11 @@ import { RegisterServerHookOptions, RegisterServerSettingOptions, serverHookObject, + SettingsChangeCallback, VideoPlaylistPrivacy, VideoPrivacy } from '@shared/models' -import { VideoTranscodingProfilesManager } from '../transcoding/video-transcoding-profiles' +import { VideoTranscodingProfilesManager } from '../transcoding/default-transcoding-profiles' import { buildPluginHelpers } from './plugin-helpers-builder' export class RegisterHelpers { @@ -46,7 +49,9 @@ export class RegisterHelpers { private idAndPassAuths: RegisterServerAuthPassOptions[] = [] private externalAuths: RegisterServerAuthExternalOptions[] = [] - private readonly onSettingsChangeCallbacks: ((settings: any) => Promise)[] = [] + private readonly onSettingsChangeCallbacks: SettingsChangeCallback[] = [] + + private readonly webSocketRoutes: RegisterServerWebSocketRouteOptions[] = [] private readonly router: express.Router private readonly videoConstantManagerFactory: VideoConstantManagerFactory @@ -54,6 +59,7 @@ export class RegisterHelpers { constructor ( private readonly npmName: string, private readonly plugin: PluginModel, + private readonly server: Server, private readonly onHookAdded: (options: RegisterServerHookOptions) => void ) { this.router = express.Router() @@ -65,6 +71,7 @@ export class RegisterHelpers { const registerSetting = this.buildRegisterSetting() const getRouter = this.buildGetRouter() + const registerWebSocketRoute = this.buildRegisterWebSocketRoute() const settingsManager = this.buildSettingsManager() const storageManager = this.buildStorageManager() @@ -84,13 +91,14 @@ export class RegisterHelpers { const unregisterIdAndPassAuth = this.buildUnregisterIdAndPassAuth() const unregisterExternalAuth = this.buildUnregisterExternalAuth() - const peertubeHelpers = buildPluginHelpers(this.plugin, this.npmName) + const peertubeHelpers = buildPluginHelpers(this.server, this.plugin, this.npmName) return { registerHook, registerSetting, getRouter, + registerWebSocketRoute, settingsManager, storageManager, @@ -179,10 +187,20 @@ export class RegisterHelpers { return this.onSettingsChangeCallbacks } + getWebSocketRoutes () { + return this.webSocketRoutes + } + private buildGetRouter () { return () => this.router } + private buildRegisterWebSocketRoute () { + return (options: RegisterServerWebSocketRouteOptions) => { + this.webSocketRoutes.push(options) + } + } + private buildRegisterSetting () { return (options: RegisterServerSettingOptions) => { this.settings.push(options) @@ -256,7 +274,7 @@ export class RegisterHelpers { setSetting: (name: string, value: string) => PluginModel.setSetting(this.plugin.name, this.plugin.type, name, value), - onSettingsChange: (cb: (settings: any) => Promise) => this.onSettingsChangeCallbacks.push(cb) + onSettingsChange: (cb: SettingsChangeCallback) => this.onSettingsChangeCallbacks.push(cb) } }