]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/types/plugins/register-server-option.model.ts
Merge branch 'release/5.0.0' into develop
[github/Chocobozzz/PeerTube.git] / server / types / plugins / register-server-option.model.ts
CommitLineData
7d9ba5c0 1import { Response, Router } from 'express'
9d4c60dc 2import { Server } from 'http'
80fdaf06 3import { Logger } from 'winston'
7d9ba5c0 4import { ActorModel } from '@server/models/actor/actor'
67ed6552
C
5import {
6 PluginPlaylistPrivacyManager,
7 PluginSettingsManager,
8 PluginStorageManager,
1896bca0 9 PluginTranscodingManager,
67ed6552
C
10 PluginVideoCategoryManager,
11 PluginVideoLanguageManager,
12 PluginVideoLicenceManager,
13 PluginVideoPrivacyManager,
14 RegisterServerHookOptions,
15 RegisterServerSettingOptions,
22820226 16 ServerConfig,
2e9c7877 17 ThumbnailType,
67ed6552
C
18 VideoBlacklistCreate
19} from '@shared/models'
c43ed8e8 20import { MUserDefault, MVideo, MVideoThumbnail, UserNotificationModelForApi } from '../models'
e1c55031
C
21import {
22 RegisterServerAuthExternalOptions,
23 RegisterServerAuthExternalResult,
24 RegisterServerAuthPassOptions
67ed6552 25} from './register-server-auth.model'
9d4c60dc 26import { RegisterServerWebSocketRouteOptions } from './register-server-websocket-route.model'
bc0d801b
C
27
28export type PeerTubeHelpers = {
29 logger: Logger
1b05d82d
C
30
31 database: {
32 query: Function
33 }
ab3ead3a
C
34
35 videos: {
b49f22d8 36 loadByUrl: (url: string) => Promise<MVideoThumbnail>
6559da28 37 loadByIdOrUUID: (id: number | string) => Promise<MVideoThumbnail>
80fdaf06 38
ab3ead3a 39 removeVideo: (videoId: number) => Promise<void>
2e9c7877 40
754c52b9
C
41 ffprobe: (path: string) => Promise<any>
42
2e9c7877
C
43 getFiles: (id: number | string) => Promise<{
44 webtorrent: {
45 videoFiles: {
46 path: string // Could be null if using remote storage
47 url: string
48 resolution: number
49 size: number
50 fps: number
51 }[]
52 }
53
54 hls: {
55 videoFiles: {
56 path: string // Could be null if using remote storage
57 url: string
58 resolution: number
59 size: number
60 fps: number
61 }[]
62 }
63
64 thumbnails: {
65 type: ThumbnailType
66 path: string
67 }[]
68 }>
ab3ead3a 69 }
5a7eecdd
C
70
71 config: {
72 getWebserverUrl: () => string
22820226 73
60bab7b5
C
74 // PeerTube >= 5.1
75 getServerListeningConfig: () => { hostname: string, port: number }
76
22820226 77 getServerConfig: () => Promise<ServerConfig>
5a7eecdd 78 }
80fdaf06
C
79
80 moderation: {
81 blockServer: (options: { byAccountId: number, hostToBlock: string }) => Promise<void>
82 unblockServer: (options: { byAccountId: number, hostToUnblock: string }) => Promise<void>
83 blockAccount: (options: { byAccountId: number, handleToBlock: string }) => Promise<void>
84 unblockAccount: (options: { byAccountId: number, handleToUnblock: string }) => Promise<void>
85
86 blacklistVideo: (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => Promise<void>
87 unblacklistVideo: (options: { videoIdOrUUID: number | string }) => Promise<void>
88 }
89
90 server: {
9d4c60dc
C
91 // PeerTube >= 5.0
92 getHTTPServer: () => Server
93
80fdaf06
C
94 getServerActor: () => Promise<ActorModel>
95 }
22820226 96
c43ed8e8 97 socket: {
98 sendNotification: (userId: number, notification: UserNotificationModelForApi) => void
99 sendVideoLiveNewState: (video: MVideo) => void
100 }
101
22820226 102 plugin: {
096231d0 103 // PeerTube >= 3.2
22820226 104 getBaseStaticRoute: () => string
302eba0d 105
096231d0 106 // PeerTube >= 3.2
302eba0d 107 getBaseRouterRoute: () => string
9d4c60dc
C
108 // PeerTube >= 5.0
109 getBaseWebSocketRoute: () => string
302eba0d 110
096231d0 111 // PeerTube >= 3.2
302eba0d
C
112 getDataDirectoryPath: () => string
113 }
114
115 user: {
096231d0 116 // PeerTube >= 3.2
22df69fd
C
117 getAuthUser: (response: Response) => Promise<MUserDefault>
118
119 // PeerTube >= 4.3
120 loadById: (id: number) => Promise<MUserDefault>
22820226 121 }
bc0d801b 122}
32fe0013 123
9ae88819
C
124export type RegisterServerOptions = {
125 registerHook: (options: RegisterServerHookOptions) => void
32fe0013 126
9ae88819 127 registerSetting: (options: RegisterServerSettingOptions) => void
32fe0013
C
128
129 settingsManager: PluginSettingsManager
130
131 storageManager: PluginStorageManager
132
ee286591
C
133 videoCategoryManager: PluginVideoCategoryManager
134 videoLanguageManager: PluginVideoLanguageManager
135 videoLicenceManager: PluginVideoLicenceManager
136
b3af2601
C
137 videoPrivacyManager: PluginVideoPrivacyManager
138 playlistPrivacyManager: PluginPlaylistPrivacyManager
139
1896bca0
C
140 transcodingManager: PluginTranscodingManager
141
7fed6375
C
142 registerIdAndPassAuth: (options: RegisterServerAuthPassOptions) => void
143 registerExternalAuth: (options: RegisterServerAuthExternalOptions) => RegisterServerAuthExternalResult
a4995eb7
C
144 unregisterIdAndPassAuth: (authName: string) => void
145 unregisterExternalAuth: (authName: string) => void
7fed6375 146
5e2b2e27
C
147 // Get plugin router to create custom routes
148 // Base routes of this router are
149 // * /plugins/:pluginName/:pluginVersion/router/...
150 // * /plugins/:pluginName/router/...
151 getRouter(): Router
152
9d4c60dc
C
153 // PeerTube >= 5.0
154 // Register WebSocket route
155 // Base routes of the WebSocket router are
156 // * /plugins/:pluginName/:pluginVersion/ws/...
157 // * /plugins/:pluginName/ws/...
158 registerWebSocketRoute: (options: RegisterServerWebSocketRouteOptions) => void
159
bc0d801b 160 peertubeHelpers: PeerTubeHelpers
32fe0013 161}