X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fplugins%2Fplugin-index.ts;h=119cee8e0647e9fef5a0d941a791d4974dcadddf;hb=5a05c14573ca3c0d16b77bef78d845f96c8c6497;hp=7bcb6ed4c9a291c278b4555ed85be66d6971e16a;hpb=5fb2e2888ce032c638e4b75d07458642f0833e52;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/plugins/plugin-index.ts b/server/lib/plugins/plugin-index.ts index 7bcb6ed4c..119cee8e0 100644 --- a/server/lib/plugins/plugin-index.ts +++ b/server/lib/plugins/plugin-index.ts @@ -1,22 +1,22 @@ -import { doRequest } from '../../helpers/requests' -import { CONFIG } from '../../initializers/config' +import { sanitizeUrl } from '@server/helpers/core-utils' +import { logger } from '@server/helpers/logger' +import { doJSONRequest } from '@server/helpers/requests' +import { CONFIG } from '@server/initializers/config' +import { PEERTUBE_VERSION } from '@server/initializers/constants' +import { PluginModel } from '@server/models/server/plugin' import { + PeerTubePluginIndex, + PeertubePluginIndexList, PeertubePluginLatestVersionRequest, - PeertubePluginLatestVersionResponse -} from '../../../shared/models/plugins/peertube-plugin-latest-version.model' -import { PeertubePluginIndexList } from '../../../shared/models/plugins/peertube-plugin-index-list.model' -import { ResultList } from '../../../shared/models' -import { PeerTubePluginIndex } from '../../../shared/models/plugins/peertube-plugin-index.model' -import { PluginModel } from '../../models/server/plugin' + PeertubePluginLatestVersionResponse, + ResultList +} from '@shared/models' import { PluginManager } from './plugin-manager' -import { logger } from '../../helpers/logger' -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 - const qs: PeertubePluginIndexList = { + const searchParams: PeertubePluginIndexList & Record = { start, count, sort, @@ -28,7 +28,7 @@ async function listAvailablePluginsFromIndex (options: PeertubePluginIndexList) const uri = CONFIG.PLUGINS.INDEX.URL + '/api/v1/plugins' try { - const { body } = await doRequest({ uri, qs, json: true }) + const { body } = await doJSONRequest(uri, { searchParams }) logger.debug('Got result from PeerTube index.', { body }) @@ -58,12 +58,28 @@ async function getLatestPluginsVersion (npmNames: string[]): Promise({ uri, body: bodyRequest, json: true, method: 'POST' }) + const options = { + json: bodyRequest, + method: 'POST' as 'POST' + } + const { body } = await doJSONRequest(uri, options) return body } +async function getLatestPluginVersion (npmName: string) { + const results = await getLatestPluginsVersion([ npmName ]) + + if (Array.isArray(results) === false || results.length !== 1) { + logger.warn('Cannot get latest supported plugin version of %s.', npmName) + return undefined + } + + return results[0].latestVersion +} + export { listAvailablePluginsFromIndex, + getLatestPluginVersion, getLatestPluginsVersion }