lychee_lib/archive/
mod.rs1use reqwest::{Error, Url};
2use serde::Deserialize;
3use std::time::Duration;
4use strum::{Display, EnumIter, EnumString, VariantNames};
5
6mod wayback;
7
8#[non_exhaustive]
10#[derive(
11 Debug, Deserialize, Default, Clone, Display, EnumIter, EnumString, VariantNames, PartialEq, Eq,
12)]
13pub enum Archive {
14 #[serde(rename = "wayback")]
15 #[strum(serialize = "wayback", ascii_case_insensitive)]
16 #[default]
17 WaybackMachine,
19}
20
21impl Archive {
22 pub async fn get_archive_snapshot(
30 &self,
31 url: &Url,
32 timeout: Duration,
33 ) -> Result<Option<Url>, Error> {
34 let function = match self {
35 Archive::WaybackMachine => wayback::get_archive_snapshot,
36 };
37
38 function(url, timeout).await
39 }
40}