43 lines
1.5 KiB
Rust
43 lines
1.5 KiB
Rust
#![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<str>) -> Result<String, smex::DecodeError> {
|
|
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
|
|
},
|
|
};
|
|
}
|
|
}
|