import { Response, Router } from 'express'
+import { Server } from 'http'
import { Logger } from 'winston'
import { ActorModel } from '@server/models/actor/actor'
import {
RegisterServerSettingOptions,
ServerConfig,
ThumbnailType,
- UserRole,
VideoBlacklistCreate
} from '@shared/models'
-import { MVideoThumbnail } from '../models'
+import { MUserDefault, MVideo, MVideoThumbnail, UserNotificationModelForApi } from '../models'
import {
RegisterServerAuthExternalOptions,
RegisterServerAuthExternalResult,
RegisterServerAuthPassOptions
} from './register-server-auth.model'
+import { RegisterServerWebSocketRouteOptions } from './register-server-websocket-route.model'
export type PeerTubeHelpers = {
logger: Logger
config: {
getWebserverUrl: () => string
+ // PeerTube >= 5.1
+ getServerListeningConfig: () => { hostname: string, port: number }
+
getServerConfig: () => Promise<ServerConfig>
}
}
server: {
+ // PeerTube >= 5.0
+ getHTTPServer: () => Server
+
getServerActor: () => Promise<ActorModel>
}
+ socket: {
+ sendNotification: (userId: number, notification: UserNotificationModelForApi) => void
+ sendVideoLiveNewState: (video: MVideo) => void
+ }
+
plugin: {
// PeerTube >= 3.2
getBaseStaticRoute: () => string
// PeerTube >= 3.2
getBaseRouterRoute: () => string
+ // PeerTube >= 5.0
+ getBaseWebSocketRoute: () => string
// PeerTube >= 3.2
getDataDirectoryPath: () => string
user: {
// PeerTube >= 3.2
- getAuthUser: (response: Response) => Promise<{
- id?: string
- username: string
- email: string
- blocked: boolean
- role: UserRole
- Account: {
- name: string
- }
- } | undefined>
+ getAuthUser: (response: Response) => Promise<MUserDefault>
+
+ // PeerTube >= 4.3
+ loadById: (id: number) => Promise<MUserDefault>
}
}
// * /plugins/:pluginName/router/...
getRouter(): Router
+ // PeerTube >= 5.0
+ // Register WebSocket route
+ // Base routes of the WebSocket router are
+ // * /plugins/:pluginName/:pluginVersion/ws/...
+ // * /plugins/:pluginName/ws/...
+ registerWebSocketRoute: (options: RegisterServerWebSocketRouteOptions) => void
+
peertubeHelpers: PeerTubeHelpers
}