2019-09-03 10:38:12 -07:00
|
|
|
use solana_sdk::pubkey::Pubkey;
|
2019-10-10 17:01:03 -06:00
|
|
|
use solana_sdk::signature::read_keypair_file;
|
2019-09-03 10:38:12 -07:00
|
|
|
|
|
|
|
// Return an error if a pubkey cannot be parsed.
|
|
|
|
pub fn is_pubkey(string: String) -> Result<(), String> {
|
|
|
|
match string.parse::<Pubkey>() {
|
|
|
|
Ok(_) => Ok(()),
|
|
|
|
Err(err) => Err(format!("{:?}", err)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Return an error if a keypair file cannot be parsed.
|
|
|
|
pub fn is_keypair(string: String) -> Result<(), String> {
|
2019-10-10 17:01:03 -06:00
|
|
|
read_keypair_file(&string)
|
2019-09-03 10:38:12 -07:00
|
|
|
.map(|_| ())
|
|
|
|
.map_err(|err| format!("{:?}", err))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Return an error if string cannot be parsed as pubkey string or keypair file location
|
|
|
|
pub fn is_pubkey_or_keypair(string: String) -> Result<(), String> {
|
|
|
|
is_pubkey(string.clone()).or_else(|_| is_keypair(string))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Return an error if a url cannot be parsed.
|
|
|
|
pub fn is_url(string: String) -> Result<(), String> {
|
|
|
|
match url::Url::parse(&string) {
|
|
|
|
Ok(url) => {
|
|
|
|
if url.has_host() {
|
|
|
|
Ok(())
|
|
|
|
} else {
|
|
|
|
Err("no host provided".to_string())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Err(err) => Err(format!("{:?}", err)),
|
|
|
|
}
|
|
|
|
}
|