mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-02-11 17:55:47 +00:00
New grpc API test
This commit is contained in:
parent
67864dfdb6
commit
145856f387
@ -40,10 +40,13 @@ message SendResponse {
|
||||
// Empty placeholder. Someday we may want to specify e.g. a particular chain fork.
|
||||
message ChainSpec {}
|
||||
|
||||
message Empty {}
|
||||
|
||||
service CompactTxStreamer {
|
||||
rpc GetLatestBlock(ChainSpec) returns (BlockID) {}
|
||||
rpc GetBlock(BlockID) returns (CompactBlock) {}
|
||||
rpc GetBlockRange(BlockRange) returns (stream CompactBlock) {}
|
||||
rpc GetTransaction(TxFilter) returns (RawTransaction) {}
|
||||
rpc SendTransaction(RawTransaction) returns (SendResponse) {}
|
||||
rpc GetLightdInfo(Empty) returns (SendResponse) {}
|
||||
}
|
||||
|
@ -45,6 +45,21 @@ impl Command for HelpCommand {
|
||||
}
|
||||
}
|
||||
|
||||
struct InfoCommand {}
|
||||
impl Command for InfoCommand {
|
||||
fn help(&self) {
|
||||
println!("Gets server info");
|
||||
}
|
||||
|
||||
fn short_help(&self) -> String {
|
||||
"Get the lightwalletd server's info".to_string()
|
||||
}
|
||||
|
||||
fn exec(&self, args: &[String], lightclient: &LightClient) {
|
||||
lightclient.do_info();
|
||||
}
|
||||
}
|
||||
|
||||
struct AddressCommand {}
|
||||
impl Command for AddressCommand {
|
||||
fn help(&self) {
|
||||
@ -60,12 +75,32 @@ impl Command for AddressCommand {
|
||||
}
|
||||
}
|
||||
|
||||
struct SendCommand {}
|
||||
impl Command for SendCommand {
|
||||
fn help(&self) {
|
||||
println!("Send ZEC");
|
||||
}
|
||||
|
||||
fn short_help(&self) -> String {
|
||||
"Send ZEC to the given address".to_string()
|
||||
}
|
||||
|
||||
fn exec(&self, args: &[String], lightclient: &LightClient) {
|
||||
lightclient.do_send(
|
||||
"ztestsapling1x65nq4dgp0qfywgxcwk9n0fvm4fysmapgr2q00p85ju252h6l7mmxu2jg9cqqhtvzd69jwhgv8d".to_string(),
|
||||
1500000,
|
||||
Some("Hello from the command".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_commands() -> Box<HashMap<String, Box<dyn Command>>> {
|
||||
let mut map: HashMap<String, Box<dyn Command>> = HashMap::new();
|
||||
|
||||
map.insert("sync".to_string(), Box::new(SyncCommand{}));
|
||||
map.insert("help".to_string(), Box::new(HelpCommand{}));
|
||||
map.insert("address".to_string(), Box::new(AddressCommand{}));
|
||||
map.insert("info".to_string(), Box::new(InfoCommand{}));
|
||||
map.insert("send".to_string(), Box::new(SendCommand{}));
|
||||
|
||||
Box::new(map)
|
||||
}
|
||||
@ -77,4 +112,4 @@ pub fn do_user_command(cmd: String, lightclient: &LightClient) {
|
||||
println!("Unknown command : {}. Type 'help' for a list of commands", cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ use tower_hyper::{client, util};
|
||||
use tower_util::MakeService;
|
||||
use futures::stream::Stream;
|
||||
|
||||
use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction, TxFilter};
|
||||
use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction, TxFilter, Empty};
|
||||
use crate::grpc_client::client::CompactTxStreamer;
|
||||
|
||||
// Used below to return the grpc "Client" type to calling methods
|
||||
@ -60,6 +60,26 @@ impl LightClient {
|
||||
println!("Balance: {}", self.wallet.balance());
|
||||
}
|
||||
|
||||
pub fn do_info(&self) {
|
||||
let uri: http::Uri = format!("http://127.0.0.1:9067").parse().unwrap();
|
||||
|
||||
let say_hello = self.make_grpc_client(uri).unwrap()
|
||||
.and_then(move |mut client| {
|
||||
client.get_lightd_info(Request::new(Empty{}))
|
||||
})
|
||||
.and_then(move |response| {
|
||||
//let tx = Transaction::read(&response.into_inner().data[..]).unwrap();
|
||||
println!("{:?}", response.into_inner());
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.map_err(|e| {
|
||||
println!("ERR = {:?}", e);
|
||||
});
|
||||
|
||||
tokio::runtime::current_thread::Runtime::new().unwrap().block_on(say_hello).unwrap()
|
||||
}
|
||||
|
||||
pub fn do_sync(&self) {
|
||||
// Sync is 3 parts
|
||||
// 1. Get the latest block
|
||||
|
Loading…
x
Reference in New Issue
Block a user