asimov_x_module/
lib.rs

1// This is free and unencumbered software released into the public domain.
2
3#![forbid(unsafe_code)]
4
5pub mod api;
6pub mod jq;
7pub mod providers;
8
9pub use providers::Provider;
10
11pub fn find_provider_for(url: impl AsRef<str>) -> Option<&'static Provider> {
12    let url = url.as_ref();
13    // Iterate in reverse to ensure that more specific URL patterns are matched first.
14    // This relies on URL_PREFIX_TO_PROVIDER being ordered from least to most specific.
15    for (url_pattern, provider) in providers::x::URL_PREFIX_TO_PROVIDER.iter().rev() {
16        if url.starts_with(url_pattern) {
17            return Some(provider);
18        }
19    }
20    None
21}