use thiserror::Error;
use crate::types::*;
use crate::glue::*;
use crate::util::*;
#[derive(Debug, Clone)]
pub struct Task<'a> {
pub config: TaskConfig,
pub job_context: &'a JobContext,
pub cleaner: &'a Cleaner<'a>,
#[cfg(feature = "cache")]
pub cache: CacheHandle<'a>,
pub unthreader: &'a Unthreader
}
impl Task<'_> {
#[doc = edoc!(applyerr(Cleaner))]
pub fn r#do(mut self) -> Result<BetterUrl, DoTaskError> {
self.cleaner.apply(&mut TaskState {
url : &mut self.config.url,
scratchpad : &mut Default::default(),
common_args: None,
context : &self.config.context,
job_context: self.job_context,
params : &self.cleaner.params,
commons : &self.cleaner.commons,
#[cfg(feature = "cache")]
cache : &self.cache,
unthreader : self.unthreader
})?;
Ok(self.config.url)
}
}
#[derive(Debug, Error)]
pub enum DoTaskError {
#[error(transparent)] MakeTaskError(#[from] MakeTaskError),
#[error(transparent)] ApplyCleanerError(#[from] ApplyCleanerError)
}