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}