-import { Router, Response } from 'express'
+import { Response, Router } from 'express'
+import { Server } from 'http'
import { Logger } from 'winston'
-import { ActorModel } from '@server/models/activitypub/actor'
+import { ActorModel } from '@server/models/actor/actor'
import {
PluginPlaylistPrivacyManager,
PluginSettingsManager,
RegisterServerHookOptions,
RegisterServerSettingOptions,
ServerConfig,
- UserRole,
+ ThumbnailType,
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
loadByIdOrUUID: (id: number | string) => Promise<MVideoThumbnail>
removeVideo: (videoId: number) => Promise<void>
+
+ ffprobe: (path: string) => Promise<any>
+
+ getFiles: (id: number | string) => Promise<{
+ webtorrent: {
+ videoFiles: {
+ path: string // Could be null if using remote storage
+ url: string
+ resolution: number
+ size: number
+ fps: number
+ }[]
+ }
+
+ hls: {
+ videoFiles: {
+ path: string // Could be null if using remote storage
+ url: string
+ resolution: number
+ size: number
+ fps: number
+ }[]
+ }
+
+ thumbnails: {
+ type: ThumbnailType
+ path: string
+ }[]
+ }>
}
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: {
- getAuthUser: (response: Response) => {
- id?: string
- username: string
- email: string
- blocked: boolean
- role: UserRole
- } | undefined
+ // PeerTube >= 3.2
+ 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
}