Skip to main content

palpo_core/push/
error.rs

1use std::error::Error as StdError;
2use std::fmt;
3
4use thiserror::Error;
5
6/// The error type returned when trying to insert a user-defined push rule into a `Ruleset`.
7#[derive(Debug, Error)]
8#[non_exhaustive]
9pub enum InsertPushRuleError {
10    /// The rule ID starts with a dot (`.`), which is reserved for server-default rules.
11    #[error("rule IDs starting with a dot are reserved for server-default rules")]
12    ServerDefaultRuleId,
13
14    /// The rule ID contains an invalid character.
15    #[error("invalid rule ID")]
16    InvalidRuleId,
17
18    /// The rule is being placed relative to a server-default rule, which is forbidden.
19    #[error("can't place rule relative to server-default rule")]
20    RelativeToServerDefaultRule,
21
22    /// The `before` or `after` rule could not be found.
23    #[error("The before or after rule could not be found")]
24    UnknownRuleId,
25
26    /// `before` has a higher priority than `after`.
27    #[error("before has a higher priority than after")]
28    BeforeHigherThanAfter,
29}
30
31/// The error type returned when trying modify a push rule that could not be found in a `Ruleset`.
32#[derive(Debug, Error)]
33#[non_exhaustive]
34#[error("The rule could not be found")]
35pub struct RuleNotFoundError;
36
37/// The error type returned when trying to remove a user-defined push rule from a `Ruleset`.
38#[derive(Debug, Error)]
39#[non_exhaustive]
40pub enum RemovePushRuleError {
41    /// The rule is a server-default rules and they can't be removed.
42    #[error("server-default rules cannot be removed")]
43    ServerDefault,
44
45    /// The rule was not found.
46    #[error("rule not found")]
47    NotFound,
48}
49
50/// An error that happens when `PushRule` cannot
51/// be converted into `PatternedPushRule`
52#[derive(Debug)]
53pub struct MissingPatternError;
54
55impl fmt::Display for MissingPatternError {
56    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
57        write!(f, "Push rule does not have a pattern.")
58    }
59}
60
61impl StdError for MissingPatternError {}