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;
18
19pub async fn send_active_connection_request(
20    mut client: AgentClient<Channel>
21) -> Result<Response<ActiveConnectionResponse>, Error> {
22    let request = Request::new(RequestActiveConnections { pod_ip: None });
23    let response = client.active_connections(request).await?;
24    Ok(response)
25}
26
27pub async fn get_all_features(
28    mut client: ServerReflectionClient<Channel>
29) -> Result<Response<Streaming<ServerReflectionResponse>>, Error> {
30    let request = ServerReflectionRequest {
31        host: "".to_string(),
32        message_request: Some(MessageRequest::FileContainingSymbol("agent.Agent".to_string())),
33    };
34    let response = client.server_reflection_info(tokio_stream::iter(vec![request])).await?;
35
36    Ok(response)
37}
38
39pub async fn send_create_blocklist_request(
40    mut client: AgentClient<Channel>,
41    ip: &str
42) -> Result<Response<BlocklistResponse>, Error> {
43    let ip = Some(ip.to_string());
44    let request = Request::new(AddIpToBlocklistRequest { ip });
45    let response = client.add_ip_to_blocklist(request).await?;
46    Ok(response)
47}
48
49pub async fn send_check_blocklist_request(
50    mut client: AgentClient<Channel>
51) -> Result<Response<BlocklistResponse>, Error> {
52    let request = Request::new(());
53    let response = client.check_blocklist(request).await?;
54    Ok(response)
55}
56
57pub async fn remove_ip_from_blocklist_request(
58    mut client: AgentClient<Channel>,
59    ip: &str
60) -> Result<Response<RmIpFromBlocklistResponse>, Error> {
61    let ip = ip.to_string();
62    let request = Request::new(RmIpFromBlocklistRequest { ip });
63    let response = client.rm_ip_from_blocklist(request).await?;
64    Ok(response)
65}