-import { PeerTubeHelpers } from '@server/types/plugins'
-import { sequelizeTypescript } from '@server/initializers/database'
+import * as express from 'express'
+import { join } from 'path'
import { buildLogger } from '@server/helpers/logger'
-import { VideoModel } from '@server/models/video/video'
+import { CONFIG } from '@server/initializers/config'
import { WEBSERVER } from '@server/initializers/constants'
-import { ServerModel } from '@server/models/server/server'
+import { sequelizeTypescript } from '@server/initializers/database'
+import { AccountModel } from '@server/models/account/account'
+import { AccountBlocklistModel } from '@server/models/account/account-blocklist'
import { getServerActor } from '@server/models/application/application'
-import { addServerInBlocklist, removeServerFromBlocklist, addAccountInBlocklist, removeAccountFromBlocklist } from '../blocklist'
+import { ServerModel } from '@server/models/server/server'
import { ServerBlocklistModel } from '@server/models/server/server-blocklist'
-import { AccountModel } from '@server/models/account/account'
+import { VideoModel } from '@server/models/video/video'
+import { VideoBlacklistModel } from '@server/models/video/video-blacklist'
+import { MPlugin } from '@server/types/models'
+import { PeerTubeHelpers } from '@server/types/plugins'
import { VideoBlacklistCreate } from '@shared/models'
+import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, removeServerFromBlocklist } from '../blocklist'
+import { ServerConfigManager } from '../server-config-manager'
import { blacklistVideo, unblacklistVideo } from '../video-blacklist'
-import { VideoBlacklistModel } from '@server/models/video/video-blacklist'
-import { AccountBlocklistModel } from '@server/models/account/account-blocklist'
+import { UserModel } from '@server/models/user/user'
-function buildPluginHelpers (npmName: string): PeerTubeHelpers {
+function buildPluginHelpers (pluginModel: MPlugin, npmName: string): PeerTubeHelpers {
const logger = buildPluginLogger(npmName)
const database = buildDatabaseHelpers()
const moderation = buildModerationHelpers()
+ const plugin = buildPluginRelatedHelpers(pluginModel, npmName)
+
+ const user = buildUserHelpers()
+
return {
logger,
database,
videos,
config,
moderation,
- server
+ plugin,
+ server,
+ user
}
}
return {
getWebserverUrl () {
return WEBSERVER.URL
+ },
+
+ getServerConfig () {
+ return ServerConfigManager.Instance.getServerConfig()
+ }
+ }
+}
+
+function buildPluginRelatedHelpers (plugin: MPlugin, npmName: string) {
+ return {
+ getBaseStaticRoute: () => `/plugins/${plugin.name}/${plugin.version}/static/`,
+
+ getBaseRouterRoute: () => `/plugins/${plugin.name}/${plugin.version}/router/`,
+
+ getDataDirectoryPath: () => join(CONFIG.STORAGE.PLUGINS_DIR, 'data', npmName)
+ }
+}
+
+function buildUserHelpers () {
+ return {
+ getAuthUser: (res: express.Response) => {
+ const user = res.locals.oauth?.token?.User
+ if (!user) return undefined
+
+ return UserModel.loadByIdFull(user.id)
}
}
}