use super::{ChecksumResult, ChecksumValidator};
pub struct StripeTokenValidator;
impl ChecksumValidator for StripeTokenValidator {
fn validator_id(&self) -> &str {
"stripe-api-key"
}
fn validate(&self, credential: &str) -> ChecksumResult {
let prefixes = [
"sk_live_", "sk_test_", "pk_live_", "pk_test_", "rk_live_", "rk_test_",
];
let Some(payload) = prefixes.iter().find_map(|p| credential.strip_prefix(p)) else {
return ChecksumResult::NotApplicable;
};
if payload.len() < 24 || payload.len() > 48 {
return ChecksumResult::Invalid;
}
if !payload.chars().all(|c| c.is_ascii_alphanumeric()) {
return ChecksumResult::Invalid;
}
ChecksumResult::Valid
}
}