krecik/
api.rs

1use crate::*;
2use rayon::prelude::*;
3
4
5/**
6   Public library API for Krecik remote-checks functionality
7**/
8
9/// Return checks from path, excluding remotes
10#[instrument]
11pub fn all_checks_but_remotes() -> Vec<Check> {
12    list_all_checks_from(CHECKS_DIR)
13        .par_iter()
14        .filter_map(|check_path| {
15            trace!("check_path: {check_path}");
16            if !check_path.contains(REMOTE_CHECKS_DIR) && !check_path.contains(TESTS_DIR) {
17                // select only valid Check, just ignore any malformed ones
18                read_single_check(check_path)
19            } else {
20                None
21            }
22        })
23        .collect()
24}
25
26
27/// Return remote domain+pages checks via mapper
28#[instrument]
29pub fn all_checks_pongo_merged() -> Vec<Check> {
30    list_all_checks_from(&format!("{}/{}", CHECKS_DIR, REMOTE_CHECKS_DIR))
31        .into_iter()
32        .map(|pongo_mapper| {
33            let mapper = read_pongo_mapper(&pongo_mapper);
34            let all_pongo_checks = get_pongo_checks(&mapper.url);
35            let domain_checks = all_pongo_checks
36                .clone()
37                .into_par_iter()
38                .flat_map(|check| collect_pongo_domains(&check))
39                .collect();
40            let pongo_checks = all_pongo_checks
41                .into_par_iter()
42                .flat_map(|check| collect_pongo_hosts(&check, &mapper))
43                .collect();
44
45            Check {
46                pages: Some(pongo_checks),
47                domains: Some(domain_checks),
48                notifier: mapper.notifier,
49            }
50        })
51        .collect()
52}