wiktionary_dump_parser/
urls.rs1use crate::error::Result;
2use crate::language_code::LanguageCode;
3use url::Url;
4
5static DUMP_INDEX_URL: &str = "https://dumps.wikimedia.org/backup-index.html";
6static DUMP_BASE_URL: &str = "https://ftp.acc.umu.se/mirror/wikimedia.org/dumps";
7
8pub fn dump_status_file(
9 base_url: &DumpBaseUrl,
10 language_code: &LanguageCode,
11 date: &str,
12) -> Result<Url> {
13 let base_url = base_url.as_str();
14 let language_abbreviation = language_code.to_wiktionary_abbreviation();
15 Ok(Url::parse(&format!(
16 "{base_url}/{language_abbreviation}wiktionary/{date}/dumpstatus.json"
17 ))?)
18}
19
20pub fn available_dates(base_url: &DumpBaseUrl, language_code: &LanguageCode) -> Result<Url> {
21 let base_url = base_url.as_str();
22 let language_abbreviation = language_code.to_wiktionary_abbreviation();
23 Ok(Url::parse(&format!(
24 "{base_url}/{language_abbreviation}wiktionary/"
25 ))?)
26}
27
28pub fn dump_url(base_url: &DumpBaseUrl, suffix: &str) -> Result<Url> {
29 let base_url = base_url.as_str();
30 Ok(Url::parse(&format!("{base_url}{suffix}"))?)
31}
32
33#[derive(Debug, Clone, Eq, PartialEq)]
34pub enum DumpIndexUrl {
35 Default,
36 Custom(String),
37}
38
39impl DumpIndexUrl {
40 pub fn as_str(&self) -> &str {
41 match self {
42 DumpIndexUrl::Default => DUMP_INDEX_URL,
43 DumpIndexUrl::Custom(custom) => custom,
44 }
45 }
46}
47
48#[derive(Debug, Clone, Eq, PartialEq)]
49pub enum DumpBaseUrl {
50 Default,
51 Custom(String),
52}
53
54impl DumpBaseUrl {
55 pub fn as_str(&self) -> &str {
56 match self {
57 DumpBaseUrl::Default => DUMP_BASE_URL,
58 DumpBaseUrl::Custom(custom) => custom,
59 }
60 }
61}