dragonfly_client_rs/
utils.rs1use reqwest::Url;
2
3#[allow(clippy::doc_markdown)] pub fn create_inspector_url(name: &str, version: &str, download_url: &Url) -> Url {
6 let mut download_url = download_url.clone();
7 let new_path = format!(
8 "project/{}/{}/{}/",
9 name,
10 version,
11 download_url.path().strip_prefix('/').unwrap(),
12 );
13
14 download_url.set_host(Some("inspector.pypi.io")).unwrap();
15 download_url.set_path(&new_path);
16
17 download_url
18}
19
20#[cfg(test)]
21mod tests {
22 use super::*;
23
24 macro_rules! create_inspector_url_tests {
25 ($($name:ident: $value:expr,)*) => {
26 $(
27 #[test]
28 fn $name() {
29 let ((n, version, download_url), exp) = $value;
30 assert_eq!(exp, create_inspector_url(n, version, &download_url));
31 }
32 )*
33 }
34 }
35
36 create_inspector_url_tests! {
37 create_inspector_url_0: (
38 ("numpy", "1.24.3", Url::parse("https://files.pythonhosted.org/packages/f3/23/7cc851bae09cf4db90d42a701dfe525780883ada86bece45e3da7a07e76b/numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl/numpy/__init__.pyi").unwrap()),
39 Url::parse("https://inspector.pypi.io/project/numpy/1.24.3/packages/f3/23/7cc851bae09cf4db90d42a701dfe525780883ada86bece45e3da7a07e76b/numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl/numpy/__init__.pyi/").unwrap(),
40 ),
41 create_inspector_url_1: (
42 ("numpy", "1.24.3", Url::parse("https://files.pythonhosted.org/packages/f3/23/7cc851bae09cf4db90d42a701dfe525780883ada86bece45e3da7a07e76b/numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl/numpy/typing/tests/data/fail/twodim_base.pyi").unwrap()),
43 Url::parse("https://inspector.pypi.io/project/numpy/1.24.3/packages/f3/23/7cc851bae09cf4db90d42a701dfe525780883ada86bece45e3da7a07e76b/numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl/numpy/typing/tests/data/fail/twodim_base.pyi/").unwrap()
44 ),
45 create_inspector_url_2: (
46 ("discord-py","2.2.3", Url::parse("https://files.pythonhosted.org/packages/36/ce/3ad5a63240b504722dada49d880f9f6250ab861baaba5d27df4f4cb3e34a/discord.py-2.2.3.tar.gz/discord.py-2.2.3/discord/app_commands/checks.py").unwrap()),
47 Url::parse("https://inspector.pypi.io/project/discord-py/2.2.3/packages/36/ce/3ad5a63240b504722dada49d880f9f6250ab861baaba5d27df4f4cb3e34a/discord.py-2.2.3.tar.gz/discord.py-2.2.3/discord/app_commands/checks.py/").unwrap()
48 ),
49 create_inspector_url_3: (
50 ("requests", "2.19.1", Url::parse("https://files.pythonhosted.org/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz/requests-2.19.1/LICENSE").unwrap()),
51 Url::parse("https://inspector.pypi.io/project/requests/2.19.1/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz/requests-2.19.1/LICENSE/").unwrap()
52 ),
53 }
54}