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