Skip to main content

autopulse_service/settings/triggers/
manual.rs

1use crate::settings::path_filter::PathFilter;
2use crate::settings::rewrite::Rewrite;
3use crate::settings::timer::Timer;
4use crate::settings::triggers::TriggerConfig;
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Clone)]
8pub struct Manual {
9    /// Rewrite path
10    pub rewrite: Option<Rewrite>,
11    /// Timer settings
12    pub timer: Option<Timer>,
13    /// Targets to ignore
14    #[serde(default)]
15    pub excludes: Vec<String>,
16    /// Path filter matched against the rewritten file path.
17    #[serde(default)]
18    pub filter: PathFilter,
19}
20
21impl TriggerConfig for Manual {
22    fn rewrite(&self) -> Option<&Rewrite> {
23        self.rewrite.as_ref()
24    }
25
26    fn timer(&self) -> Option<&Timer> {
27        self.timer.as_ref()
28    }
29
30    fn excludes(&self) -> &Vec<String> {
31        &self.excludes
32    }
33
34    fn filter(&self) -> &PathFilter {
35        &self.filter
36    }
37}
38
39/// Manual trigger query parameters
40///
41/// Example:
42/// - /triggers/manual?path=/path/to/file
43/// - /triggers/manual?path=/path/to/file&hash=3b3fa...
44#[derive(Deserialize)]
45pub struct ManualQueryParams {
46    /// Path to the file
47    pub path: String,
48    /// Optional sha256sum hash of the file
49    pub hash: Option<String>,
50}