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'
RegisterServerAuthExternalResult,
RegisterServerAuthPassOptions,
RegisterServerExternalAuthenticatedResult,
- RegisterServerOptions
+ RegisterServerOptions,
+ RegisterServerWebSocketRouteOptions
} from '@server/types/plugins'
import {
EncoderOptionsBuilder,
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 {
private idAndPassAuths: RegisterServerAuthPassOptions[] = []
private externalAuths: RegisterServerAuthExternalOptions[] = []
- private readonly onSettingsChangeCallbacks: ((settings: any) => Promise<any>)[] = []
+ private readonly onSettingsChangeCallbacks: SettingsChangeCallback[] = []
+
+ private readonly webSocketRoutes: RegisterServerWebSocketRouteOptions[] = []
private readonly router: express.Router
private readonly videoConstantManagerFactory: VideoConstantManagerFactory
constructor (
private readonly npmName: string,
private readonly plugin: PluginModel,
+ private readonly server: Server,
private readonly onHookAdded: (options: RegisterServerHookOptions) => void
) {
this.router = express.Router()
const registerSetting = this.buildRegisterSetting()
const getRouter = this.buildGetRouter()
+ const registerWebSocketRoute = this.buildRegisterWebSocketRoute()
const settingsManager = this.buildSettingsManager()
const storageManager = this.buildStorageManager()
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,
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)
setSetting: (name: string, value: string) => PluginModel.setSetting(this.plugin.name, this.plugin.type, name, value),
- onSettingsChange: (cb: (settings: any) => Promise<any>) => this.onSettingsChangeCallbacks.push(cb)
+ onSettingsChange: (cb: SettingsChangeCallback) => this.onSettingsChangeCallbacks.push(cb)
}
}