PeerTube/server/core/types/plugins/register-server-option.mode...

173 lines
4.9 KiB
TypeScript
Raw Normal View History

2021-05-11 11:15:29 +02:00
import { Response, Router } from 'express'
import { Server } from 'http'
2020-05-07 14:58:24 +02:00
import { Logger } from 'winston'
2020-06-23 14:10:17 +02:00
import {
PluginPlaylistPrivacyManager,
PluginSettingsManager,
PluginStorageManager,
PluginTranscodingManager,
2020-06-23 14:10:17 +02:00
PluginVideoCategoryManager,
PluginVideoLanguageManager,
PluginVideoLicenceManager,
PluginVideoPrivacyManager,
RegisterServerHookOptions,
RegisterServerSettingOptions,
2021-04-09 14:51:28 +02:00
ServerConfig,
ThumbnailType_Type,
2020-06-23 14:10:17 +02:00
VideoBlacklistCreate
} from '@peertube/peertube-models'
import { ActorModel } from '@server/models/actor/actor.js'
import { MUserDefault, MVideo, MVideoThumbnail, MVideoWithAllFiles, UserNotificationModelForApi } from '../models/index.js'
import {
RegisterServerAuthExternalOptions,
RegisterServerAuthExternalResult,
RegisterServerAuthPassOptions
} from './register-server-auth.model.js'
import { RegisterServerWebSocketRouteOptions } from './register-server-websocket-route.model.js'
2020-04-09 09:57:32 +02:00
export type PeerTubeHelpers = {
logger: Logger
2020-04-09 11:00:30 +02:00
database: {
query: Function
}
videos: {
2020-12-08 14:30:29 +01:00
loadByUrl: (url: string) => Promise<MVideoThumbnail>
loadByIdOrUUIDWithFiles: (id: number | string) => Promise<MVideoWithAllFiles>
2021-02-11 10:23:52 +01:00
loadByIdOrUUID: (id: number | string) => Promise<MVideoThumbnail>
2020-05-07 14:58:24 +02:00
removeVideo: (videoId: number) => Promise<void>
2021-12-16 16:49:43 +01:00
2021-12-16 17:00:46 +01:00
ffprobe: (path: string) => Promise<any>
2021-12-16 16:49:43 +01:00
getFiles: (id: number | string) => Promise<{
webtorrent: { // TODO: remove in v7
videoFiles: {
path: string // Could be null if using remote storage
url: string
resolution: number
size: number
fps: number
}[]
}
webVideo: {
2021-12-16 16:49:43 +01:00
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_Type
2021-12-16 16:49:43 +01:00
path: string
}[]
}>
}
2020-04-30 08:46:40 +02:00
config: {
getWebserverUrl: () => string
2021-04-09 14:51:28 +02:00
// PeerTube >= 5.1
getServerListeningConfig: () => { hostname: string, port: number }
2021-04-09 14:51:28 +02:00
getServerConfig: () => Promise<ServerConfig>
2020-04-30 08:46:40 +02:00
}
2020-05-07 14:58:24 +02:00
moderation: {
blockServer: (options: { byAccountId: number, hostToBlock: string }) => Promise<void>
unblockServer: (options: { byAccountId: number, hostToUnblock: string }) => Promise<void>
blockAccount: (options: { byAccountId: number, handleToBlock: string }) => Promise<void>
unblockAccount: (options: { byAccountId: number, handleToUnblock: string }) => Promise<void>
blacklistVideo: (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => Promise<void>
unblacklistVideo: (options: { videoIdOrUUID: number | string }) => Promise<void>
}
server: {
// PeerTube >= 5.0
getHTTPServer: () => Server
2020-05-07 14:58:24 +02:00
getServerActor: () => Promise<ActorModel>
}
2021-04-09 14:51:28 +02:00
socket: {
sendNotification: (userId: number, notification: UserNotificationModelForApi) => void
sendVideoLiveNewState: (video: MVideo) => void
}
2021-04-09 14:51:28 +02:00
plugin: {
2021-04-22 11:42:51 +02:00
// PeerTube >= 3.2
2021-04-09 14:51:28 +02:00
getBaseStaticRoute: () => string
2021-04-22 11:42:51 +02:00
// PeerTube >= 3.2
getBaseRouterRoute: () => string
// PeerTube >= 5.0
getBaseWebSocketRoute: () => string
2021-04-22 11:42:51 +02:00
// PeerTube >= 3.2
getDataDirectoryPath: () => string
}
user: {
2021-04-22 11:42:51 +02:00
// PeerTube >= 3.2
2022-08-02 15:29:00 +02:00
getAuthUser: (response: Response) => Promise<MUserDefault>
// PeerTube >= 4.3
loadById: (id: number) => Promise<MUserDefault>
2021-04-09 14:51:28 +02:00
}
2020-04-09 09:57:32 +02:00
}
2019-07-18 16:43:41 +02:00
2019-07-24 11:17:42 +02:00
export type RegisterServerOptions = {
registerHook: (options: RegisterServerHookOptions) => void
2019-07-18 16:43:41 +02:00
2019-07-24 11:17:42 +02:00
registerSetting: (options: RegisterServerSettingOptions) => void
2019-07-18 16:43:41 +02:00
settingsManager: PluginSettingsManager
storageManager: PluginStorageManager
videoCategoryManager: PluginVideoCategoryManager
videoLanguageManager: PluginVideoLanguageManager
videoLicenceManager: PluginVideoLicenceManager
videoPrivacyManager: PluginVideoPrivacyManager
playlistPrivacyManager: PluginPlaylistPrivacyManager
transcodingManager: PluginTranscodingManager
2020-04-22 16:07:04 +02:00
registerIdAndPassAuth: (options: RegisterServerAuthPassOptions) => void
registerExternalAuth: (options: RegisterServerAuthExternalOptions) => RegisterServerAuthExternalResult
2020-04-30 10:03:09 +02:00
unregisterIdAndPassAuth: (authName: string) => void
unregisterExternalAuth: (authName: string) => void
2020-04-22 16:07:04 +02:00
// Get plugin router to create custom routes
// Base routes of this router are
// * /plugins/:pluginName/:pluginVersion/router/...
// * /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
2020-04-09 09:57:32 +02:00
peertubeHelpers: PeerTubeHelpers
2019-07-18 16:43:41 +02:00
}