use crate::models::*;
#[derive(Default, Clone)]
pub struct TransactionEnvelope(String);
#[derive(Default, Clone)]
pub struct NoTransactionEnvelope;
#[derive(Default)]
pub struct PostTransactionRequest<T> {
transaction_envelope_xdr: T,
}
impl PostTransactionRequest<NoTransactionEnvelope> {
pub fn new() -> Self {
PostTransactionRequest::default()
}
pub fn set_transaction_envelope_xdr(
self,
transaction_envelope_xdr: impl Into<String>,
) -> Result<PostTransactionRequest<TransactionEnvelope>, String> {
Ok(PostTransactionRequest {
transaction_envelope_xdr: TransactionEnvelope(transaction_envelope_xdr.into()),
})
}
}
impl PostRequest for PostTransactionRequest<TransactionEnvelope> {
fn get_body(&self) -> Vec<(String, String)> {
vec![(
"tx".to_string(),
self.transaction_envelope_xdr.0.to_string(),
)]
}
fn build_url(&self, base_url: &str) -> String {
format!("{}/{}", base_url, super::TRANSACTIONS_PATH)
}
}