PeerTube/shared/extra-utils/server/plugins.ts

255 lines
5.7 KiB
TypeScript
Raw Normal View History

2019-07-19 07:36:04 -05:00
import { makeGetRequest, makePostBodyRequest, makePutBodyRequest } from '../requests/requests'
import { PluginType } from '../../models/plugins/plugin.type'
2019-07-19 07:36:04 -05:00
import { PeertubePluginIndexList } from '../../models/plugins/peertube-plugin-index-list.model'
import { readJSON, writeJSON } from 'fs-extra'
import { ServerInfo } from './servers'
import { root } from '../miscs/miscs'
import { join } from 'path'
function listPlugins (parameters: {
url: string,
accessToken: string,
start?: number,
count?: number,
sort?: string,
2019-07-19 07:36:04 -05:00
pluginType?: PluginType,
uninstalled?: boolean,
expectedStatus?: number
}) {
2019-07-19 07:36:04 -05:00
const { url, accessToken, start, count, sort, pluginType, uninstalled, expectedStatus = 200 } = parameters
const path = '/api/v1/plugins'
return makeGetRequest({
url,
path,
token: accessToken,
query: {
start,
count,
sort,
2019-07-19 07:36:04 -05:00
pluginType,
uninstalled
},
statusCodeExpected: expectedStatus
})
}
2019-07-19 07:36:04 -05:00
function listAvailablePlugins (parameters: {
url: string,
accessToken: string,
start?: number,
count?: number,
sort?: string,
pluginType?: PluginType,
currentPeerTubeEngine?: string,
search?: string
expectedStatus?: number
}) {
const { url, accessToken, start, count, sort, pluginType, search, currentPeerTubeEngine, expectedStatus = 200 } = parameters
const path = '/api/v1/plugins/available'
const query: PeertubePluginIndexList = {
start,
count,
sort,
pluginType,
currentPeerTubeEngine,
search
}
return makeGetRequest({
url,
path,
token: accessToken,
query,
statusCodeExpected: expectedStatus
})
}
function getPlugin (parameters: {
url: string,
accessToken: string,
npmName: string,
expectedStatus?: number
}) {
const { url, accessToken, npmName, expectedStatus = 200 } = parameters
const path = '/api/v1/plugins/' + npmName
return makeGetRequest({
url,
path,
token: accessToken,
statusCodeExpected: expectedStatus
})
}
2019-07-19 07:36:04 -05:00
function updatePluginSettings (parameters: {
url: string,
accessToken: string,
npmName: string,
2019-07-19 07:36:04 -05:00
settings: any,
expectedStatus?: number
}) {
2019-07-19 07:36:04 -05:00
const { url, accessToken, npmName, settings, expectedStatus = 204 } = parameters
const path = '/api/v1/plugins/' + npmName + '/settings'
2019-07-19 07:36:04 -05:00
return makePutBodyRequest({
url,
path,
token: accessToken,
2019-07-19 07:36:04 -05:00
fields: { settings },
statusCodeExpected: expectedStatus
})
}
function getPluginRegisteredSettings (parameters: {
url: string,
accessToken: string,
npmName: string,
expectedStatus?: number
}) {
const { url, accessToken, npmName, expectedStatus = 200 } = parameters
const path = '/api/v1/plugins/' + npmName + '/registered-settings'
return makeGetRequest({
url,
path,
token: accessToken,
statusCodeExpected: expectedStatus
})
}
2019-07-26 02:35:43 -05:00
function getPublicSettings (parameters: {
url: string,
npmName: string,
expectedStatus?: number
}) {
const { url, npmName, expectedStatus = 200 } = parameters
const path = '/api/v1/plugins/' + npmName + '/public-settings'
return makeGetRequest({
url,
path,
statusCodeExpected: expectedStatus
})
}
2019-07-26 07:44:50 -05:00
function getPluginTranslations (parameters: {
url: string,
locale: string,
expectedStatus?: number
}) {
const { url, locale, expectedStatus = 200 } = parameters
const path = '/plugins/translations/' + locale + '.json'
return makeGetRequest({
url,
path,
statusCodeExpected: expectedStatus
})
}
function installPlugin (parameters: {
url: string,
accessToken: string,
path?: string,
npmName?: string
expectedStatus?: number
}) {
2019-07-12 04:39:58 -05:00
const { url, accessToken, npmName, path, expectedStatus = 200 } = parameters
const apiPath = '/api/v1/plugins/install'
return makePostBodyRequest({
url,
path: apiPath,
token: accessToken,
fields: { npmName, path },
statusCodeExpected: expectedStatus
})
}
2019-07-12 04:39:58 -05:00
function updatePlugin (parameters: {
url: string,
accessToken: string,
path?: string,
npmName?: string
expectedStatus?: number
}) {
const { url, accessToken, npmName, path, expectedStatus = 200 } = parameters
const apiPath = '/api/v1/plugins/update'
return makePostBodyRequest({
url,
path: apiPath,
token: accessToken,
fields: { npmName, path },
statusCodeExpected: expectedStatus
})
}
function uninstallPlugin (parameters: {
url: string,
accessToken: string,
npmName: string
expectedStatus?: number
}) {
const { url, accessToken, npmName, expectedStatus = 204 } = parameters
const apiPath = '/api/v1/plugins/uninstall'
return makePostBodyRequest({
url,
path: apiPath,
token: accessToken,
fields: { npmName },
statusCodeExpected: expectedStatus
})
}
2019-07-19 07:36:04 -05:00
function getPluginsCSS (url: string) {
const path = '/plugins/global.css'
return makeGetRequest({
url,
path,
statusCodeExpected: 200
})
}
function getPackageJSONPath (server: ServerInfo, npmName: string) {
return join(root(), 'test' + server.internalServerNumber, 'plugins', 'node_modules', npmName, 'package.json')
}
function updatePluginPackageJSON (server: ServerInfo, npmName: string, json: any) {
const path = getPackageJSONPath(server, npmName)
return writeJSON(path, json)
}
function getPluginPackageJSON (server: ServerInfo, npmName: string) {
const path = getPackageJSONPath(server, npmName)
return readJSON(path)
}
2019-07-19 10:30:41 -05:00
function getPluginTestPath (suffix = '') {
return join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test' + suffix)
}
export {
listPlugins,
2019-07-19 07:36:04 -05:00
listAvailablePlugins,
installPlugin,
2019-07-26 07:44:50 -05:00
getPluginTranslations,
2019-07-19 07:36:04 -05:00
getPluginsCSS,
2019-07-12 04:39:58 -05:00
updatePlugin,
getPlugin,
uninstallPlugin,
2019-07-19 07:36:04 -05:00
updatePluginSettings,
getPluginRegisteredSettings,
getPackageJSONPath,
updatePluginPackageJSON,
2019-07-19 10:30:41 -05:00
getPluginPackageJSON,
2019-07-26 02:35:43 -05:00
getPluginTestPath,
getPublicSettings
}