agent_api/
requests.rs

1use anyhow::Error;
2use std::result::Result::Ok;
3use tonic::{ Request, Response, Streaming, transport::Channel };
4use tonic_reflection::pb::v1::{
5    ServerReflectionRequest,
6    ServerReflectionResponse,
7    server_reflection_client::ServerReflectionClient,
8    server_reflection_request::MessageRequest,
9};
10
11use crate::agent::agent_client::AgentClient;
12use crate::agent::ActiveConnectionResponse;
13use crate::agent::RequestActiveConnections;
14use crate::agent::BlocklistResponse;
15use crate::agent::AddIpToBlocklistRequest;
16use crate::agent::RmIpFromBlocklistRequest;
17use crate::agent::RmIpFromBlocklistResponse;
18use crate::agent::DroppedPacketsResponse;
19use crate::agent::LatencyMetricsResponse;
20
21#[cfg(feature = "client")]
22pub async fn send_active_connection_request(
23    mut client: AgentClient<Channel>
24) -> Result<Response<ActiveConnectionResponse>, Error> {
25    let request = Request::new(RequestActiveConnections { pod_ip: None });
26    let response = client.active_connections(request).await?;
27    Ok(response)
28}
29
30#[cfg(feature = "client")]
31pub async fn get_all_features(
32    mut client: ServerReflectionClient<Channel>
33) -> Result<Response<Streaming<ServerReflectionResponse>>, Error> {
34    let request = ServerReflectionRequest {
35        host: "".to_string(),
36        message_request: Some(MessageRequest::FileContainingSymbol("agent.Agent".to_string())),
37    };
38    let response = client.server_reflection_info(tokio_stream::iter(vec![request])).await?;
39
40    Ok(response)
41}
42
43#[cfg(feature = "client")]
44pub async fn send_create_blocklist_request(
45    mut client: AgentClient<Channel>,
46    ip: &str
47) -> Result<Response<BlocklistResponse>, Error> {
48    let ip = Some(ip.to_string());
49    let request = Request::new(AddIpToBlocklistRequest { ip });
50    let response = client.add_ip_to_blocklist(request).await?;
51    Ok(response)
52}
53
54#[cfg(feature = "client")]
55pub async fn send_check_blocklist_request(
56    mut client: AgentClient<Channel>
57) -> Result<Response<BlocklistResponse>, Error> {
58    let request = Request::new(());
59    let response = client.check_blocklist(request).await?;
60    Ok(response)
61}
62
63#[cfg(feature = "client")]
64pub async fn remove_ip_from_blocklist_request(
65    mut client: AgentClient<Channel>,
66    ip: &str
67) -> Result<Response<RmIpFromBlocklistResponse>, Error> {
68    let ip = ip.to_string();
69    let request = Request::new(RmIpFromBlocklistRequest { ip });
70    let response = client.rm_ip_from_blocklist(request).await?;
71    Ok(response)
72}
73
74#[cfg(feature = "client")]
75pub async fn send_dropped_packets_request(
76    mut client: AgentClient<Channel>,
77) -> Result<Response<DroppedPacketsResponse>, Error> {
78    let request = Request::new(());
79    let response = client.get_dropped_packets_metrics(
80        request
81    ).await?;
82    Ok(response)
83}
84
85#[cfg(feature = "client")]
86pub async fn send_latency_metrics_request(
87    mut client: AgentClient<Channel>,
88) -> Result<Response<LatencyMetricsResponse>, Error> {
89    let request = Request::new(());
90    let response = client.get_latency_metrics(
91        request
92    ).await?;
93    Ok(response)
94}