mod response;
use response::SearchRulesetRoot;
pub use response::SubmitLivehuntRuleset;
use crate::{
utils::{http_body_post, http_delete, http_get, http_get_with_params, http_patch},
VtClient, VtResult,
};
impl VtClient {
pub fn get_rulesets(
&self,
limit: Option<&str>,
order: Option<&str>,
filter: Option<&str>,
cursor: Option<&str>,
) -> VtResult<SearchRulesetRoot> {
let url = format!("{}/intelligence/hunting_rulesets", self.endpoint);
let mut query_params: Vec<(&str, &str)> = Vec::new();
if let Some(l) = limit {
query_params.push(("limit", l))
}
if let Some(o) = order {
query_params.push(("order", o))
}
if let Some(f) = filter {
query_params.push(("filter", f))
}
if let Some(c) = cursor {
query_params.push(("cursor", c))
}
http_get_with_params(
&self.api_key,
&self.user_agent,
&url,
&query_params.as_slice(),
)
}
pub fn get_ruleset(&self, ruleset_id: &str) -> VtResult<SearchRulesetRoot> {
let url = format!(
"{}/intelligence/hunting_rulesets/{}",
self.endpoint, ruleset_id
);
http_get(&self.api_key, &self.user_agent, &url)
}
pub fn create_ruleset(&self, data: &SubmitLivehuntRuleset) -> VtResult<SubmitLivehuntRuleset> {
let url = format!("{}/intelligence/hunting_rulesets", self.endpoint);
http_body_post(&self.api_key, &self.user_agent, &url, data)
}
pub fn delete_ruleset(&self, ruleset_id: &str) -> VtResult<String> {
let url = format!(
"{}/intelligence/hunting_rulesets/{}",
self.endpoint, ruleset_id
);
http_delete(&self.api_key, &self.user_agent, &url)
}
pub fn update_ruleset(
&self,
ruleset_id: &str,
data: &SubmitLivehuntRuleset,
) -> VtResult<SubmitLivehuntRuleset> {
let url = format!(
"{}/intelligence/hunting_rulesets/{}",
self.endpoint, ruleset_id
);
http_patch(&self.api_key, &self.user_agent, &url, data)
}
}