elasticctl_api/search/
dataview.rs1use crate::data_views_ops;
4use elasticctl_core::{Error, ErrorKind, Result, Transport};
5use serde_json::Value;
6
7pub fn resolve_title(body: &Value, name: &str) -> Result<String> {
10 let views = body
11 .get("data_view")
12 .and_then(Value::as_array)
13 .ok_or_else(|| {
14 Error::new(
15 ErrorKind::Http,
16 "decoding data views response field `data_view`",
17 )
18 })?;
19 let view = data_views_ops::select_by_id_or_name(
20 views,
21 name,
22 |view| view.get("id").and_then(Value::as_str),
23 |view| view.get("name").and_then(Value::as_str),
24 )?;
25 view.get("title")
26 .and_then(Value::as_str)
27 .map(str::to_owned)
28 .ok_or_else(|| Error::new(ErrorKind::Http, "decoding data view field `title`"))
29}
30
31pub async fn resolve(t: &Transport, name: &str) -> Result<String> {
33 let body = t.get("/api/data_views").await?;
34 resolve_title(&body, name)
35}
36
37pub async fn default_alerts_index(t: &Transport) -> Result<String> {
39 let body = t.get("/api/detection_engine/index").await?;
40 body.get("name")
41 .and_then(Value::as_str)
42 .map(str::to_owned)
43 .ok_or_else(|| {
44 Error::new(
45 ErrorKind::Http,
46 "decoding detection engine index field `name`",
47 )
48 })
49}