diff --git a/src/webhooks.rs b/src/webhooks.rs index fee01c7..701c3d4 100644 --- a/src/webhooks.rs +++ b/src/webhooks.rs @@ -72,10 +72,6 @@ impl JsonFilter { ); let regex = Regex::new(&self.regex).map_err(WebhookeyError::Regex)?; - // let value = self.get_string(data)?; - - // if let Some(value) = self.get_string() {data.pointer(&self.pointer) { - // let value = get_string(); if let Some(value) = data.pointer(&self.pointer) { if regex.is_match(&self.get_string(&value)?) { @@ -121,33 +117,43 @@ impl FilterType { pub fn evaluate(&self, data: &serde_json::Value) -> Result { match self { FilterType::And(filters) => { - let (results, errors): (Vec<_>, Vec<_>) = filters + let (mut results, mut errors) = (Vec::new(), Vec::new()); + + filters .iter() .map(|filter| filter.evaluate(data)) - .partition(Result::is_ok); + .for_each(|item| match item { + Ok(o) => results.push(o), + Err(e) => errors.push(e), + }); if errors.is_empty() { - Ok(results.iter().all(|r| *r.as_ref().unwrap())) // should never fail + Ok(results.iter().all(|r| *r)) } else { - errors.iter().for_each(|e| { - error!("Could not evaluate Filter: {}", e.as_ref().unwrap_err()) - }); + errors + .iter() + .for_each(|e| error!("Could not evaluate Filter: {}", e)); Err(WebhookeyError::InvalidFilter) } } FilterType::Or(filters) => { - let (results, errors): (Vec<_>, Vec<_>) = filters + let (mut results, mut errors) = (Vec::new(), Vec::new()); + + filters .iter() .map(|filter| filter.evaluate(data)) - .partition(Result::is_ok); + .for_each(|item| match item { + Ok(o) => results.push(o), + Err(e) => errors.push(e), + }); if errors.is_empty() { - Ok(results.iter().any(|r| *r.as_ref().unwrap())) // should never fail + Ok(results.iter().any(|r| *r)) } else { - errors.iter().for_each(|e| { - error!("Could not evaluate Filter: {}", e.as_ref().unwrap_err()) - }); + errors + .iter() + .for_each(|e| error!("Could not evaluate Filter: {}", e)); Err(WebhookeyError::InvalidFilter) }