Skip to main content

vt3/hunting/livehunt/
mod.rs

1mod response;
2use response::SearchRulesetRoot;
3pub use response::SubmitLivehuntRuleset;
4
5use crate::{
6    utils::{http_body_post, http_delete, http_get, http_get_with_params, http_patch},
7    VtClient, VtResult,
8};
9
10impl VtClient {
11    pub fn get_rulesets(
12        &self,
13        limit: Option<&str>,
14        order: Option<&str>,
15        filter: Option<&str>,
16        cursor: Option<&str>,
17    ) -> VtResult<SearchRulesetRoot> {
18        //! Retrieve VT Hunting livehunt rulesets
19        //!
20        //! ## Example Usage
21        //! ```rust
22        //! use vt3::VtClient;
23        //!
24        //! let vt = VtClient::new("Your API Key");
25        //! vt.get_rulesets(Some("10"), None, None, None);
26        //! ```
27        let url = format!("{}/intelligence/hunting_rulesets", self.endpoint);
28        let mut query_params: Vec<(&str, &str)> = Vec::new();
29        if let Some(l) = limit {
30            query_params.push(("limit", l))
31        }
32        if let Some(o) = order {
33            query_params.push(("order", o))
34        }
35        if let Some(f) = filter {
36            query_params.push(("filter", f))
37        }
38        if let Some(c) = cursor {
39            query_params.push(("cursor", c))
40        }
41
42        http_get_with_params(
43            &self.api_key,
44            &self.user_agent,
45            &url,
46            &query_params.as_slice(),
47        )
48    }
49
50    pub fn get_ruleset(&self, ruleset_id: &str) -> VtResult<SearchRulesetRoot> {
51        //! Retrieve a VT Hunting Livehunt ruleset given by a id
52        //!
53        //! ## Example Usage
54        //! ```rust
55        //! use vt3::VtClient;
56        //!
57        //! let vt = VtClient::new("Your API Key");
58        //! vt.get_ruleset("1");
59        //! ```
60        let url = format!(
61            "{}/intelligence/hunting_rulesets/{}",
62            self.endpoint, ruleset_id
63        );
64        http_get(&self.api_key, &self.user_agent, &url)
65    }
66
67    pub fn create_ruleset(&self, data: &SubmitLivehuntRuleset) -> VtResult<SubmitLivehuntRuleset> {
68        //! Create/Submit a new VT Hunting Livehunt ruleset
69        //!
70        //! ## Example Usage
71        //! ```rust
72        //! use vt3::{VtClient, SubmitLivehuntRuleset};
73        //!
74        //! let vt = VtClient::new("Your API Key");
75        //! let mut data = SubmitLivehuntRuleset::default();
76        //! vt.create_ruleset(&data);
77        //! ```
78        let url = format!("{}/intelligence/hunting_rulesets", self.endpoint);
79        http_body_post(&self.api_key, &self.user_agent, &url, data)
80    }
81
82    pub fn delete_ruleset(&self, ruleset_id: &str) -> VtResult<String> {
83        //! Delete/Remove Hunting ruleset by ID
84        //!
85        //! ## Example Usage
86        //! ```rust
87        //! use vt3::VtClient;
88        //!
89        //! let vt = VtClient::new("Your API Key");
90        //! vt.delete_ruleset("1");
91        //! ```
92        let url = format!(
93            "{}/intelligence/hunting_rulesets/{}",
94            self.endpoint, ruleset_id
95        );
96        http_delete(&self.api_key, &self.user_agent, &url)
97    }
98
99    pub fn update_ruleset(
100        &self,
101        ruleset_id: &str,
102        data: &SubmitLivehuntRuleset,
103    ) -> VtResult<SubmitLivehuntRuleset> {
104        //! Update/Modify a VT Hunting Livehunt ruleset
105        //!
106        //! ## Example Usage
107        //! ```rust
108        //! use vt3::{VtClient, SubmitLivehuntRuleset};
109        //!
110        //! let vt = VtClient::new("Your API Key");
111        //! let mut data = SubmitLivehuntRuleset::default();
112        //! vt.update_ruleset("1", &data);
113        //! ```
114        let url = format!(
115            "{}/intelligence/hunting_rulesets/{}",
116            self.endpoint, ruleset_id
117        );
118        http_patch(&self.api_key, &self.user_agent, &url, data)
119    }
120}