Faucet: Add per-request cap (#11665)

* Add per-request cap; also use clap-utils

* Clean up arg names and take cap inputs as SOL
This commit is contained in:
Tyera Eulberg
2020-08-17 17:33:14 -06:00
committed by GitHub
parent 069ba2bc9e
commit 71d5409b3b
2 changed files with 60 additions and 45 deletions

View File

@@ -1,4 +1,5 @@
use clap::{crate_description, crate_name, App, Arg};
use solana_clap_utils::input_parsers::{lamports_of_sol, value_of};
use solana_faucet::{
faucet::{run_faucet, Faucet, FAUCET_PORT},
socketaddr,
@@ -34,36 +35,36 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.help("Time slice over which to limit requests to faucet"),
)
.arg(
Arg::with_name("cap")
.long("cap")
Arg::with_name("per_time_cap")
.long("per-time-cap")
.alias("cap")
.value_name("NUM")
.takes_value(true)
.help("Request limit for time slice"),
.help("Request limit for time slice, in SOL"),
)
.arg(
Arg::with_name("per_request_cap")
.long("per-request-cap")
.value_name("NUM")
.takes_value(true)
.help("Request limit for a single request, in SOL"),
)
.get_matches();
let mint_keypair = read_keypair_file(matches.value_of("keypair").unwrap())
.expect("failed to read client keypair");
let time_slice: Option<u64>;
if let Some(secs) = matches.value_of("slice") {
time_slice = Some(secs.to_string().parse().expect("failed to parse slice"));
} else {
time_slice = None;
}
let request_cap: Option<u64>;
if let Some(c) = matches.value_of("cap") {
request_cap = Some(c.to_string().parse().expect("failed to parse cap"));
} else {
request_cap = None;
}
let time_slice = value_of(&matches, "slice");
let per_time_cap = lamports_of_sol(&matches, "per_time_cap");
let per_request_cap = lamports_of_sol(&matches, "per_request_cap");
let faucet_addr = socketaddr!(0, FAUCET_PORT);
let faucet = Arc::new(Mutex::new(Faucet::new(
mint_keypair,
time_slice,
request_cap,
per_time_cap,
per_request_cap,
)));
let faucet1 = faucet.clone();