X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftypes%2Fplugins%2Fregister-server-option.model.ts;h=df419fff47239576630c6f7dffcc2dc4e58f3379;hb=3f3530c3dbc5339b4cba53710b8568b4ad39152e;hp=1b9250ce4682df58d845e36a4fba60028e4c0abc;hpb=302eba0d898e38dca14739486441c27c0be6c62f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/types/plugins/register-server-option.model.ts b/server/types/plugins/register-server-option.model.ts index 1b9250ce4..df419fff4 100644 --- a/server/types/plugins/register-server-option.model.ts +++ b/server/types/plugins/register-server-option.model.ts @@ -1,6 +1,7 @@ -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, @@ -13,15 +14,16 @@ import { 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 @@ -35,11 +37,43 @@ export type PeerTubeHelpers = { loadByIdOrUUID: (id: number | string) => Promise removeVideo: (videoId: number) => Promise + + ffprobe: (path: string) => Promise + + 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 } @@ -54,25 +88,36 @@ export type PeerTubeHelpers = { } server: { + // PeerTube >= 5.0 + getHTTPServer: () => Server + getServerActor: () => Promise } + 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 + + // PeerTube >= 4.3 + loadById: (id: number) => Promise } } @@ -105,5 +150,12 @@ export type RegisterServerOptions = { // * /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 }