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}