]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/types/plugins/register-server-option.model.ts
1b9250ce4682df58d845e36a4fba60028e4c0abc
[github/Chocobozzz/PeerTube.git] / server / types / plugins / register-server-option.model.ts
1 import { Router, Response } from 'express'
2 import { Logger } from 'winston'
3 import { ActorModel } from '@server/models/activitypub/actor'
4 import {
5 PluginPlaylistPrivacyManager,
6 PluginSettingsManager,
7 PluginStorageManager,
8 PluginTranscodingManager,
9 PluginVideoCategoryManager,
10 PluginVideoLanguageManager,
11 PluginVideoLicenceManager,
12 PluginVideoPrivacyManager,
13 RegisterServerHookOptions,
14 RegisterServerSettingOptions,
15 ServerConfig,
16 UserRole,
17 VideoBlacklistCreate
18 } from '@shared/models'
19 import { MVideoThumbnail } from '../models'
20 import {
21 RegisterServerAuthExternalOptions,
22 RegisterServerAuthExternalResult,
23 RegisterServerAuthPassOptions
24 } from './register-server-auth.model'
25
26 export type PeerTubeHelpers = {
27 logger: Logger
28
29 database: {
30 query: Function
31 }
32
33 videos: {
34 loadByUrl: (url: string) => Promise<MVideoThumbnail>
35 loadByIdOrUUID: (id: number | string) => Promise<MVideoThumbnail>
36
37 removeVideo: (videoId: number) => Promise<void>
38 }
39
40 config: {
41 getWebserverUrl: () => string
42
43 getServerConfig: () => Promise<ServerConfig>
44 }
45
46 moderation: {
47 blockServer: (options: { byAccountId: number, hostToBlock: string }) => Promise<void>
48 unblockServer: (options: { byAccountId: number, hostToUnblock: string }) => Promise<void>
49 blockAccount: (options: { byAccountId: number, handleToBlock: string }) => Promise<void>
50 unblockAccount: (options: { byAccountId: number, handleToUnblock: string }) => Promise<void>
51
52 blacklistVideo: (options: { videoIdOrUUID: number | string, createOptions: VideoBlacklistCreate }) => Promise<void>
53 unblacklistVideo: (options: { videoIdOrUUID: number | string }) => Promise<void>
54 }
55
56 server: {
57 getServerActor: () => Promise<ActorModel>
58 }
59
60 plugin: {
61 getBaseStaticRoute: () => string
62
63 getBaseRouterRoute: () => string
64
65 getDataDirectoryPath: () => string
66 }
67
68 user: {
69 getAuthUser: (response: Response) => {
70 id?: string
71 username: string
72 email: string
73 blocked: boolean
74 role: UserRole
75 } | undefined
76 }
77 }
78
79 export type RegisterServerOptions = {
80 registerHook: (options: RegisterServerHookOptions) => void
81
82 registerSetting: (options: RegisterServerSettingOptions) => void
83
84 settingsManager: PluginSettingsManager
85
86 storageManager: PluginStorageManager
87
88 videoCategoryManager: PluginVideoCategoryManager
89 videoLanguageManager: PluginVideoLanguageManager
90 videoLicenceManager: PluginVideoLicenceManager
91
92 videoPrivacyManager: PluginVideoPrivacyManager
93 playlistPrivacyManager: PluginPlaylistPrivacyManager
94
95 transcodingManager: PluginTranscodingManager
96
97 registerIdAndPassAuth: (options: RegisterServerAuthPassOptions) => void
98 registerExternalAuth: (options: RegisterServerAuthExternalOptions) => RegisterServerAuthExternalResult
99 unregisterIdAndPassAuth: (authName: string) => void
100 unregisterExternalAuth: (authName: string) => void
101
102 // Get plugin router to create custom routes
103 // Base routes of this router are
104 // * /plugins/:pluginName/:pluginVersion/router/...
105 // * /plugins/:pluginName/router/...
106 getRouter(): Router
107
108 peertubeHelpers: PeerTubeHelpers
109 }