PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-core/src/bitgo/pendingApproval

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

/**
 * @prettier
 */
import * as _ from 'lodash';
import * as common from '../../common';
import { IBaseCoin } from '../baseCoin';
import { BitGoBase } from '../bitgoBase';
import {
  GetPendingApprovalOptions,
  IPendingApprovals,
  ListPendingApprovalsOptions,
  ListPendingApprovalsResult,
  PendingApproval,
} from '../pendingApproval';

const debug = require('debug')('bitgo:v2:pendingApprovals');

export class PendingApprovals implements IPendingApprovals {
  private readonly bitgo: BitGoBase;
  private readonly baseCoin: IBaseCoin;

  constructor(bitgo: BitGoBase, baseCoin: IBaseCoin) {
    this.bitgo = bitgo;
    this.baseCoin = baseCoin;
  }

  /**
   * List the pending approvals available to the user
   * @param params
   */
  async list(params: ListPendingApprovalsOptions = {}): Promise<ListPendingApprovalsResult> {
    common.validateParams(params, [], ['walletId', 'enterpriseId']);
    const queryParams: any = {};
    if (_.isString(params.walletId)) {
      queryParams.walletId = params.walletId;
    }
    if (_.isString(params.enterpriseId)) {
      queryParams.enterprise = params.enterpriseId;
    }

    if (Object.keys(queryParams).length !== 1) {
      throw new Error('must provide exactly 1 of walletId or enterpriseId to get pending approvals on');
    }

    const body = (await this.bitgo.get(this.baseCoin.url('/pendingapprovals')).query(queryParams).result()) as any;
    body.pendingApprovals = body.pendingApprovals.map(
      (currentApproval) => new PendingApproval(this.bitgo, this.baseCoin, currentApproval)
    );
    return body;
  }

  /**
   * Fetch an existing pending approval
   * @param params
   */
  async get(params: GetPendingApprovalOptions = {}): Promise<PendingApproval> {
    common.validateParams(params, ['id'], []);

    const approvalData = (await this.bitgo.get(this.baseCoin.url('/pendingapprovals/' + params.id)).result()) as any;
    let approvalWallet;
    if (approvalData.wallet) {
      try {
        approvalWallet = await this.baseCoin.wallets().get({ id: approvalData.wallet });
      } catch (e) {
        // nothing to be done here, although it's probably noteworthy that a non-existent wallet is referenced
        debug('failed to get wallet %s, referenced by pending approval %s', approvalData.wallet, params.id);
      }
    }
    return new PendingApproval(this.bitgo, this.baseCoin, approvalData, approvalWallet);
  }
}

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


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