mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			255 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			255 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
import { makeGetRequest, makePostBodyRequest, makePutBodyRequest } from '../requests/requests'
 | 
						|
import { PluginType } from '../../models/plugins/plugin.type'
 | 
						|
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,
 | 
						|
  pluginType?: PluginType,
 | 
						|
  uninstalled?: boolean,
 | 
						|
  expectedStatus?: number
 | 
						|
}) {
 | 
						|
  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,
 | 
						|
      pluginType,
 | 
						|
      uninstalled
 | 
						|
    },
 | 
						|
    statusCodeExpected: expectedStatus
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
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
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
function updatePluginSettings (parameters: {
 | 
						|
  url: string,
 | 
						|
  accessToken: string,
 | 
						|
  npmName: string,
 | 
						|
  settings: any,
 | 
						|
  expectedStatus?: number
 | 
						|
}) {
 | 
						|
  const { url, accessToken, npmName, settings, expectedStatus = 204 } = parameters
 | 
						|
  const path = '/api/v1/plugins/' + npmName + '/settings'
 | 
						|
 | 
						|
  return makePutBodyRequest({
 | 
						|
    url,
 | 
						|
    path,
 | 
						|
    token: accessToken,
 | 
						|
    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
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
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
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
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
 | 
						|
}) {
 | 
						|
  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
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
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
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
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)
 | 
						|
}
 | 
						|
 | 
						|
function getPluginTestPath (suffix = '') {
 | 
						|
  return join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test' + suffix)
 | 
						|
}
 | 
						|
 | 
						|
export {
 | 
						|
  listPlugins,
 | 
						|
  listAvailablePlugins,
 | 
						|
  installPlugin,
 | 
						|
  getPluginTranslations,
 | 
						|
  getPluginsCSS,
 | 
						|
  updatePlugin,
 | 
						|
  getPlugin,
 | 
						|
  uninstallPlugin,
 | 
						|
  updatePluginSettings,
 | 
						|
  getPluginRegisteredSettings,
 | 
						|
  getPackageJSONPath,
 | 
						|
  updatePluginPackageJSON,
 | 
						|
  getPluginPackageJSON,
 | 
						|
  getPluginTestPath,
 | 
						|
  getPublicSettings
 | 
						|
}
 |