use crate::parsing::{consume, consume_mutually_exclusive};
#[must_use]
pub fn validate(url: impl AsRef<str>) -> bool {
match parse_id_from_url(url.as_ref()) {
Some(_id) => todo!(),
None => false,
}
}
#[must_use]
pub fn parse_id_from_url(url: &str) -> Option<String> {
let mut url = itertools::peek_nth(url.chars());
consume_mutually_exclusive(&mut url, &["https://", "http://"]);
consume_mutually_exclusive(&mut url, &["www.", "music."]);
consume(&mut url, "youtube.com/playlist?list=");
let mut s = String::with_capacity(64);
for ch in url {
if ch == '&' {
break;
}
s.push(ch);
}
if s.is_empty() {
None
} else {
Some(s)
}
}