import { PluginModel } from '../../models/server/plugin'
import { PluginManager } from './plugin-manager'
import { logger } from '../../helpers/logger'
-
-const packageJSON = require('../../../../package.json')
+import { PEERTUBE_VERSION } from '../../initializers/constants'
+import { sanitizeUrl } from '@server/helpers/core-utils'
async function listAvailablePluginsFromIndex (options: PeertubePluginIndexList) {
const { start = 0, count = 20, search, sort = 'npmName', pluginType } = options
sort,
pluginType,
search,
- currentPeerTubeEngine: packageJSON.version
+ currentPeerTubeEngine: options.currentPeerTubeEngine || PEERTUBE_VERSION
}
const uri = CONFIG.PLUGINS.INDEX.URL + '/api/v1/plugins'
- const { body } = await doRequest({ uri, qs, json: true })
+ try {
+ const { body } = await doRequest<any>({ uri, qs, json: true })
- logger.debug('Got result from PeerTube index.', { body })
+ logger.debug('Got result from PeerTube index.', { body })
- await addInstanceInformation(body)
+ addInstanceInformation(body)
- return body as ResultList<PeerTubePluginIndex>
+ return body as ResultList<PeerTubePluginIndex>
+ } catch (err) {
+ logger.error('Cannot list available plugins from index %s.', uri, { err })
+ return undefined
+ }
}
-async function addInstanceInformation (result: ResultList<PeerTubePluginIndex>) {
+function addInstanceInformation (result: ResultList<PeerTubePluginIndex>) {
for (const d of result.data) {
d.installed = PluginManager.Instance.isRegistered(d.npmName)
d.name = PluginModel.normalizePluginName(d.npmName)
async function getLatestPluginsVersion (npmNames: string[]): Promise<PeertubePluginLatestVersionResponse> {
const bodyRequest: PeertubePluginLatestVersionRequest = {
npmNames,
- currentPeerTubeEngine: packageJSON.version
+ currentPeerTubeEngine: PEERTUBE_VERSION
}
- const uri = CONFIG.PLUGINS.INDEX.URL + '/api/v1/plugins/latest-version'
+ const uri = sanitizeUrl(CONFIG.PLUGINS.INDEX.URL) + '/api/v1/plugins/latest-version'
- const { body } = await doRequest({ uri, body: bodyRequest })
+ const { body } = await doRequest<any>({ uri, body: bodyRequest, json: true, method: 'POST' })
return body
}