use std::collections::HashMap;
use shuttle_core::{SignedTransaction, ToXdr};
use error::Result;
use client::{self, InnerClient};
#[derive(Debug, Clone)]
pub struct SubmitTransactionRequest {
inner: InnerClient,
tx_envelope: String,
}
impl SubmitTransactionRequest {
pub fn new(inner: InnerClient, tx: &SignedTransaction) -> Result<SubmitTransactionRequest> {
let tx_envelope = tx.to_base64()?;
Ok(SubmitTransactionRequest { inner, tx_envelope })
}
pub fn send(&self) -> Result<SubmitTransactionResponse> {
let mut body = HashMap::new();
body.insert("tx", self.tx_envelope.clone());
client::parse_response(&mut self.inner.post(&["transactions"])?.form(&body).send()?)
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct SubmitTransactionResponse {
hash: String,
ledger: u64,
envelope_xdr: String,
result_xdr: String,
result_meta_xdr: String,
}