1 import { Response, Router } from 'express'
2 import { Logger } from 'winston'
3 import { ActorModel } from '@server/models/actor/actor'
5 PluginPlaylistPrivacyManager,
8 PluginTranscodingManager,
9 PluginVideoCategoryManager,
10 PluginVideoLanguageManager,
11 PluginVideoLicenceManager,
12 PluginVideoPrivacyManager,
13 RegisterServerHookOptions,
14 RegisterServerSettingOptions,
18 } from '@shared/models'
19 import { MUserDefault, MVideoThumbnail } from '../models'
21 RegisterServerAuthExternalOptions,
22 RegisterServerAuthExternalResult,
23 RegisterServerAuthPassOptions
24 } from './register-server-auth.model'
26 export type PeerTubeHelpers = {
34 loadByUrl: (url: string) => Promise<MVideoThumbnail>
35 loadByIdOrUUID: (id: number | string) => Promise<MVideoThumbnail>
37 removeVideo: (videoId: number) => Promise<void>
39 ffprobe: (path: string) => Promise<any>
41 getFiles: (id: number | string) => Promise<{
44 path: string // Could be null if using remote storage
54 path: string // Could be null if using remote storage
70 getWebserverUrl: () => string
72 getServerConfig: () => Promise<ServerConfig>
76 blockServer: (options: { byAccountId: number, hostToBlock: string }) => Promise<void>
77 unblockServer: (options: { byAccountId: number, hostToUnblock: string }) => Promise<void>
78 blockAccount: (options: { byAccountId: number, handleToBlock: string }) => Promise<void>
79 unblockAccount: (options: { byAccountId: number, handleToUnblock: string }) => Promise<void>
81 blacklistVideo: (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => Promise<void>
82 unblacklistVideo: (options: { videoIdOrUUID: number | string }) => Promise<void>
86 getServerActor: () => Promise<ActorModel>
91 getBaseStaticRoute: () => string
94 getBaseRouterRoute: () => string
97 getDataDirectoryPath: () => string
102 getAuthUser: (response: Response) => Promise<MUserDefault>
105 loadById: (id: number) => Promise<MUserDefault>
109 export type RegisterServerOptions = {
110 registerHook: (options: RegisterServerHookOptions) => void
112 registerSetting: (options: RegisterServerSettingOptions) => void
114 settingsManager: PluginSettingsManager
116 storageManager: PluginStorageManager
118 videoCategoryManager: PluginVideoCategoryManager
119 videoLanguageManager: PluginVideoLanguageManager
120 videoLicenceManager: PluginVideoLicenceManager
122 videoPrivacyManager: PluginVideoPrivacyManager
123 playlistPrivacyManager: PluginPlaylistPrivacyManager
125 transcodingManager: PluginTranscodingManager
127 registerIdAndPassAuth: (options: RegisterServerAuthPassOptions) => void
128 registerExternalAuth: (options: RegisterServerAuthExternalOptions) => RegisterServerAuthExternalResult
129 unregisterIdAndPassAuth: (authName: string) => void
130 unregisterExternalAuth: (authName: string) => void
132 // Get plugin router to create custom routes
133 // Base routes of this router are
134 // * /plugins/:pluginName/:pluginVersion/router/...
135 // * /plugins/:pluginName/router/...
138 peertubeHelpers: PeerTubeHelpers