//! This module provides the error enum to handle different errors associated while requesting data from | |
//! the upstream search engines with the search query provided by the user. | |
use error_stack::Context; | |
use std::fmt; | |
/// A custom error type used for handle engine associated errors. | |
/// | |
/// This enum provides variants three different categories of errors: | |
/// * `RequestError` - This variant handles all request related errors like forbidden, not found, | |
/// etc. | |
/// * `EmptyResultSet` - This variant handles the not results found error provide by the upstream | |
/// search engines. | |
/// * `UnexpectedError` - This variant handles all the errors which are unexpected or occur rarely | |
/// and are errors mostly related to failure in initialization of HeaderMap, Selector errors and | |
/// all other errors occurring within the code handling the `upstream search engines`. | |
pub enum EngineError { | |
EmptyResultSet, | |
RequestError, | |
UnexpectedError, | |
} | |
impl fmt::Display for EngineError { | |
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
match self { | |
EngineError::EmptyResultSet => { | |
write!(f, "The upstream search engine returned an empty result set") | |
} | |
EngineError::RequestError => { | |
write!( | |
f, | |
"Error occurred while requesting data from upstream search engine" | |
) | |
} | |
EngineError::UnexpectedError => { | |
write!(f, "An unexpected error occurred while processing the data") | |
} | |
} | |
} | |
} | |
impl Context for EngineError {} | |