horizon/resources/transactions.js

import { SUBMIT_TRANSACTION_TIMEOUT } from '../constants'
import { ResourceGroupBase } from '../../resource_group_base'

/**
 * Transactions.
 *
 * @class
 */
export class Transactions extends ResourceGroupBase {
  /**
   * Submit a transaction.
   *
   * @param {Transaction} transaction A transaction to be submitted.
   * @return {JsonApiResponse} Response.
   */
  submit (transaction) {
    let tx = transaction.toEnvelope().toXDR().toString('base64')

    return this._makeCallBuilder()
      .withTimeout(SUBMIT_TRANSACTION_TIMEOUT)
      .withCredentials()
      .post({
        data: {
          type: 'transactions',
          attributes: { tx }
        }
      })
  }

  _makeCallBuilder () {
    return this._server._makeCallBuilder()
      .appendUrlSegment('transactions')
  }
}