hive_router_plan_executor/headers/
errors.rs

1use http::header::{InvalidHeaderName, InvalidHeaderValue};
2use regex_automata::meta::BuildError;
3use vrl::prelude::ExpressionError;
4
5#[derive(thiserror::Error, Debug)]
6pub enum HeaderRuleCompileError {
7    #[error("Invalid header name '{0}'. Please check the configuration. Reason: {1}")]
8    BadHeaderName(String, InvalidHeaderName),
9    #[error("Invalid header value for header '{0}'. Please check the configuration. Reason: {1}")]
10    BadHeaderValue(String, InvalidHeaderValue),
11    #[error("The 'rename' option is only allowed when propagating a single header specified with 'named'. You cannot use 'rename' when propagating multiple headers or when using 'matching'.")]
12    InvalidRename,
13    #[error("The 'default' option is only allowed when propagating a single header specified with 'named'. You cannot use 'default' when propagating multiple headers or when using 'matching'.")]
14    InvalidDefault,
15    #[error("Failed to build regex for header matching. Please check your regex patterns for syntax errors. Reason: {0}")]
16    RegexBuild(#[from] Box<BuildError>),
17    #[error("Failed to compile VRL expression for header '{0}'. Please check your VRL expression for syntax errors. Diagnostic: {1}")]
18    ExpressionBuild(String, String),
19}
20
21#[derive(thiserror::Error, Debug, Clone)]
22pub enum HeaderRuleRuntimeError {
23    #[error("Failed to evaluate VRL expression for header '{0}'. Reason: {1}")]
24    ExpressionEvaluation(String, Box<ExpressionError>),
25    #[error("Invalid header value for header '{0}'.")]
26    BadHeaderValue(String),
27    #[error("Failed to convert VRL value to header value for '{0}': {1}")]
28    ValueConversion(String, String),
29}
30
31impl HeaderRuleCompileError {
32    pub fn new_expression_build(header_name: String, err: String) -> Self {
33        HeaderRuleCompileError::ExpressionBuild(header_name, err)
34    }
35}
36
37impl HeaderRuleRuntimeError {
38    pub fn new_expression_evaluation(header_name: String, error: Box<ExpressionError>) -> Self {
39        HeaderRuleRuntimeError::ExpressionEvaluation(header_name, error)
40    }
41
42    pub fn new_value_conversion(header_name: String, reason: String) -> Self {
43        HeaderRuleRuntimeError::ValueConversion(header_name, reason)
44    }
45}