riva 0.1.0

Provider-agnostic Rust library for extracting normalized media stream metadata from SoundCloud and YouTube via async helpers.
Documentation
use url::Url;

use super::extractor::RivaError;

pub fn normalize_track_url(input: &str) -> Result<String, RivaError> {
    let trimmed = input.trim();
    if trimmed.is_empty() {
        return Err(RivaError::InvalidUrl);
    }

    let candidate = if trimmed.starts_with("http://") || trimmed.starts_with("https://") {
        trimmed.to_string()
    } else {
        format!("https://{trimmed}")
    };

    let parsed = Url::parse(&candidate).map_err(|_| RivaError::InvalidUrl)?;
    let host = parsed.host_str().unwrap_or_default();
    if host.contains("soundcloud.com") || host == "snd.sc" {
        return Ok(parsed.into());
    }

    Err(RivaError::InvalidUrl)
}