X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fplugins%2Fplugin-index.ts;h=119cee8e0647e9fef5a0d941a791d4974dcadddf;hb=352819ef921e45381b3fbb17072926103b320e73;hp=170f0c7e208729a64c69dba8ea100b0af3e954f1;hpb=610d0be13b3d01f653ef269271dd667a57c85ef2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/plugins/plugin-index.ts b/server/lib/plugins/plugin-index.ts index 170f0c7e2..119cee8e0 100644 --- a/server/lib/plugins/plugin-index.ts +++ b/server/lib/plugins/plugin-index.ts @@ -1,21 +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' 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, @@ -27,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 }) @@ -55,14 +56,30 @@ 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 }