stellar_rs/transactions/
single_transaction_request.rs1use crate::models::*;
2
3#[derive(Default, Clone)]
5pub struct TransactionHash(String);
6
7#[derive(Default, Clone)]
9pub struct NoTransactionHash;
10
11#[derive(Default)]
12pub struct SingleTransactionRequest<T> {
13 transaction_hash: T,
15}
16
17impl SingleTransactionRequest<NoTransactionHash> {
18 pub fn new() -> Self {
20 SingleTransactionRequest::default()
21 }
22
23 pub fn set_transaction_hash(
29 self,
30 transaction_hash: impl Into<String>,
31 ) -> Result<SingleTransactionRequest<TransactionHash>, String> {
32 let transaction_hash = transaction_hash.into();
33 match transaction_hash.len() {
34 64 => Ok(SingleTransactionRequest {
35 transaction_hash: TransactionHash(transaction_hash),
36 }),
37 _ => Err("Transaction hash must be 64 characters long".to_string()),
38 }
39 }
40}
41
42impl Request for SingleTransactionRequest<TransactionHash> {
43 fn get_query_parameters(&self) -> String {
44 let mut query = String::new();
45 query.push_str(&format!("{}", self.transaction_hash.0));
46
47 query.trim_end_matches('&').to_string()
48 }
49
50 fn build_url(&self, base_url: &str) -> String {
51 format!(
54 "{}/{}/{}",
55 base_url,
56 super::TRANSACTIONS_PATH,
57 self.get_query_parameters()
58 )
59 }
60}