#![allow(warnings, unused)] include!(concat!(env!("OUT_DIR"), "/codegen.rs")); // NOTE: The RPC API requires base64-encoded transaction IDs rather than hex-encoded. // That was confusing, after all their branding is `0x` based. pub fn encode_transaction_id(txid: impl AsRef) -> Result { use base64::prelude::*; let tx = smex::decode(txid)?; Ok(BASE64_STANDARD.encode(tx)) } #[cfg(test)] mod tests { use super::*; use base64::prelude::*; #[tokio::test] async fn it_works() { let client = Client::new("https://mainnet-api.spacemesh.network"); let txid = "638442a2033f20b5a7280b9a4f2bfc73022f6e7ec64b1497b85335444381d99d"; let txid = smex::decode(txid).unwrap(); let txid = BASE64_STANDARD.encode(txid); let result = client .transaction_service_list(&types::Spacemeshv2alpha1TransactionRequest { txid: vec![txid], limit: Some(100.to_string()), ..Default::default() }) .await .unwrap() .into_inner(); let result = match result { types::GooglerpcStatusOrSpacemeshv2alpha1TransactionList::GooglerpcStatus(googlerpc_status) => panic!("{:?}", googlerpc_status.message), types::GooglerpcStatusOrSpacemeshv2alpha1TransactionList::Spacemeshv2alpha1TransactionList(transaction_list) => { transaction_list }, }; } }