PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/avalanche/src/apis/admin

Просмотр файла: api.ts

/**
 * @packageDocumentation
 * @module API-Admin
 */
import AvalancheCore from "../../avalanche"
import { JRPCAPI } from "../../common/jrpcapi"
import { RequestResponseData } from "../../common/apibase"
import {
  AliasChainParams,
  AliasParams,
  GetChainAliasesParams,
  GetLoggerLevelParams,
  GetLoggerLevelResponse,
  LoadVMsResponse,
  SetLoggerLevelParams,
  SetLoggerLevelResponse
} from "./interfaces"

/**
 * Class for interacting with a node's AdminAPI.
 *
 * @category RPCAPIs
 *
 * @remarks This extends the [[JRPCAPI]] class. This class should not be directly called.
 * Instead, use the [[Avalanche.addAPI]] function to register this interface with Avalanche.
 */

export class AdminAPI extends JRPCAPI {
  /**
   * Assign an API an alias, a different endpoint for the API. The original endpoint will still
   * work. This change only affects this node other nodes will not know about this alias.
   *
   * @param endpoint The original endpoint of the API. endpoint should only include the part of
   * the endpoint after /ext/
   * @param alias The API being aliased can now be called at ext/alias
   *
   * @returns Returns a Promise boolean containing success, true for success, false for failure.
   */
  alias = async (endpoint: string, alias: string): Promise<boolean> => {
    const params: AliasParams = {
      endpoint,
      alias
    }
    const response: RequestResponseData = await this.callMethod(
      "admin.alias",
      params
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * Give a blockchain an alias, a different name that can be used any place the blockchain’s
   * ID is used.
   *
   * @param chain The blockchain’s ID
   * @param alias Can now be used in place of the blockchain’s ID (in API endpoints, for example)
   *
   * @returns Returns a Promise boolean containing success, true for success, false for failure.
   */
  aliasChain = async (chain: string, alias: string): Promise<boolean> => {
    const params: AliasChainParams = {
      chain,
      alias
    }
    const response: RequestResponseData = await this.callMethod(
      "admin.aliasChain",
      params
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * Get all aliases for given blockchain
   *
   * @param chain The blockchain’s ID
   *
   * @returns Returns a Promise string[] containing aliases of the blockchain.
   */
  getChainAliases = async (chain: string): Promise<string[]> => {
    const params: GetChainAliasesParams = {
      chain
    }
    const response: RequestResponseData = await this.callMethod(
      "admin.getChainAliases",
      params
    )
    return response.data.result.aliases
      ? response.data.result.aliases
      : response.data.result
  }

  /**
   * Returns log and display levels of loggers
   *
   * @param loggerName the name of the logger to be returned. This is an optional argument. If not specified, it returns all possible loggers.
   *
   * @returns Returns a Promise containing logger levels
   */
  getLoggerLevel = async (
    loggerName?: string
  ): Promise<GetLoggerLevelResponse> => {
    const params: GetLoggerLevelParams = {}
    if (typeof loggerName !== "undefined") {
      params.loggerName = loggerName
    }
    const response: RequestResponseData = await this.callMethod(
      "admin.getLoggerLevel",
      params
    )
    return response.data.result
  }

  /**
   * Dynamically loads any virtual machines installed on the node as plugins
   *
   * @returns Returns a Promise containing new VMs and failed VMs
   */
  loadVMs = async (): Promise<LoadVMsResponse> => {
    const response: RequestResponseData = await this.callMethod("admin.loadVMs")
    return response.data.result.aliases
      ? response.data.result.aliases
      : response.data.result
  }

  /**
   * Dump the mutex statistics of the node to the specified file.
   *
   * @returns Promise for a boolean that is true on success.
   */
  lockProfile = async (): Promise<boolean> => {
    const response: RequestResponseData = await this.callMethod(
      "admin.lockProfile"
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * Dump the current memory footprint of the node to the specified file.
   *
   * @returns Promise for a boolean that is true on success.
   */
  memoryProfile = async (): Promise<boolean> => {
    const response: RequestResponseData = await this.callMethod(
      "admin.memoryProfile"
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * Sets log and display levels of loggers.
   *
   * @param loggerName the name of the logger to be changed. This is an optional parameter.
   * @param logLevel the log level of written logs, can be omitted.
   * @param displayLevel the log level of displayed logs, can be omitted.
   *
   * @returns Returns a Promise containing logger levels
   */
  setLoggerLevel = async (
    loggerName?: string,
    logLevel?: string,
    displayLevel?: string
  ): Promise<SetLoggerLevelResponse> => {
    const params: SetLoggerLevelParams = {}
    if (typeof loggerName !== "undefined") {
      params.loggerName = loggerName
    }
    if (typeof logLevel !== "undefined") {
      params.logLevel = logLevel
    }
    if (typeof displayLevel !== "undefined") {
      params.displayLevel = displayLevel
    }
    const response: RequestResponseData = await this.callMethod(
      "admin.setLoggerLevel",
      params
    )
    return response.data.result
  }

  /**
   * Start profiling the cpu utilization of the node. Will dump the profile information into
   * the specified file on stop.
   *
   * @returns Promise for a boolean that is true on success.
   */
  startCPUProfiler = async (): Promise<boolean> => {
    const response: RequestResponseData = await this.callMethod(
      "admin.startCPUProfiler"
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * Stop the CPU profile that was previously started.
   *
   * @returns Promise for a boolean that is true on success.
   */
  stopCPUProfiler = async (): Promise<boolean> => {
    const response: RequestResponseData = await this.callMethod(
      "admin.stopCPUProfiler"
    )
    return response.data.result.success
      ? response.data.result.success
      : response.data.result
  }

  /**
   * This class should not be instantiated directly. Instead use the [[Avalanche.addAPI]]
   * method.
   *
   * @param core A reference to the Avalanche class
   * @param baseURL Defaults to the string "/ext/admin" as the path to rpc's baseURL
   */
  constructor(core: AvalancheCore, baseURL: string = "/ext/admin") {
    super(core, baseURL)
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!