2018-07-31 22:07:53 -07:00
|
|
|
use bincode::serialize;
|
|
|
|
use drone::DroneRequest;
|
2018-08-09 08:13:57 -07:00
|
|
|
use signature::Pubkey;
|
2018-07-31 22:07:53 -07:00
|
|
|
use std::error;
|
|
|
|
use std::io::Write;
|
|
|
|
use std::net::{SocketAddr, TcpStream};
|
|
|
|
|
|
|
|
pub fn request_airdrop(
|
|
|
|
drone_addr: &SocketAddr,
|
2018-08-09 08:13:57 -07:00
|
|
|
id: &Pubkey,
|
2018-07-31 22:07:53 -07:00
|
|
|
tokens: u64,
|
|
|
|
) -> Result<(), Box<error::Error>> {
|
|
|
|
let mut stream = TcpStream::connect(drone_addr)?;
|
|
|
|
let req = DroneRequest::GetAirdrop {
|
|
|
|
airdrop_request_amount: tokens,
|
2018-08-09 08:03:08 -07:00
|
|
|
client_pubkey: *id,
|
2018-07-31 22:07:53 -07:00
|
|
|
};
|
|
|
|
let tx = serialize(&req).expect("serialize drone request");
|
|
|
|
stream.write_all(&tx).unwrap();
|
|
|
|
// TODO: add timeout to this function, in case of unresponsive drone
|
|
|
|
Ok(())
|
|
|
|
}
|