parent
							
								
									9a6efceb34
								
							
						
					
					
						commit
						86c877c8e9
					
				@ -11,6 +11,7 @@ export interface AbstractBitcoinApi {
 | 
			
		||||
  $getAddress(address: string): Promise<IEsploraApi.Address>;
 | 
			
		||||
  $getAddressTransactions(address: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]>;
 | 
			
		||||
  $getAddressPrefix(prefix: string): string[];
 | 
			
		||||
  $sendRawTransaction(rawTransaction: string): Promise<string>;
 | 
			
		||||
}
 | 
			
		||||
export interface BitcoinRpcCredentials {
 | 
			
		||||
  host: string;
 | 
			
		||||
 | 
			
		||||
@ -98,6 +98,10 @@ class BitcoinApi implements AbstractBitcoinApi {
 | 
			
		||||
    return found;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $sendRawTransaction(rawTransaction: string): Promise<string> {
 | 
			
		||||
    return this.bitcoindClient.sendRawTransaction(rawTransaction);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected async $convertTransaction(transaction: IBitcoinApi.Transaction, addPrevout: boolean): Promise<IEsploraApi.Transaction> {
 | 
			
		||||
    let esploraTransaction: IEsploraApi.Transaction = {
 | 
			
		||||
      txid: transaction.txid,
 | 
			
		||||
 | 
			
		||||
@ -56,6 +56,10 @@ class ElectrsApi implements AbstractBitcoinApi {
 | 
			
		||||
  $getAddressPrefix(prefix: string): string[] {
 | 
			
		||||
    throw new Error('Method not implemented.');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $sendRawTransaction(rawTransaction: string): Promise<string> {
 | 
			
		||||
    throw new Error('Method not implemented.');
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default ElectrsApi;
 | 
			
		||||
 | 
			
		||||
@ -246,6 +246,7 @@ class Server {
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'mempool/txids', routes.getMempoolTxIds)
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'mempool/recent', routes.getRecentMempoolTransactions)
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId', routes.getTransaction)
 | 
			
		||||
        .post(config.MEMPOOL.API_URL_PREFIX + 'tx', routes.$postTransaction)
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/hex', routes.getRawTransaction)
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/status', routes.getTransactionStatus)
 | 
			
		||||
        .get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/outspends', routes.getTransactionOutspends)
 | 
			
		||||
 | 
			
		||||
@ -764,6 +764,18 @@ class Routes {
 | 
			
		||||
      res.status(500).send(e instanceof Error ? e.message : e);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async $postTransaction(req: Request, res: Response) {
 | 
			
		||||
    res.setHeader('content-type', 'text/plain');
 | 
			
		||||
    try {
 | 
			
		||||
      const rawtx = Object.keys(req.body)[0];
 | 
			
		||||
      const txIdResult = await bitcoinApi.$sendRawTransaction(rawtx);
 | 
			
		||||
      res.send(txIdResult);
 | 
			
		||||
    } catch (e: any) {
 | 
			
		||||
      res.status(400).send(e.message && e.code ? 'sendrawtransaction RPC error: ' + JSON.stringify({ code: e.code, message: e.message })
 | 
			
		||||
        : (e.message || 'Error'));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default new Routes();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user