feature/agent-client #12

Merged
GW_MC merged 13 commits from feature/agent-client into master 2025-12-28 19:25:36 +08:00
3 changed files with 31 additions and 0 deletions
Showing only changes of commit 96e7f36731 - Show all commits

View File

@@ -79,6 +79,7 @@ pub async fn get_health_info(
#[cfg(test)]
mod test {
use crate::configs::FromConfig;
use crate::services::agent_client::AgentService;
use crate::{
routes::{AppState, api::health::state::HealthState},
services::{
@@ -94,6 +95,7 @@ mod test {
};
use super::*;
use agent_client::apis::configuration::Configuration;
use axum::body::to_bytes;
use axum::{
Router,
@@ -124,6 +126,7 @@ mod test {
},
user: Arc::new(UserServiceImpl::new(db.clone())),
server_state: Arc::new(ServerStateService::new(db.clone())),
agent_client: Arc::new(AgentService::new(Configuration::default())),
}),
});

View File

@@ -5,6 +5,8 @@ pub mod settings;
use std::sync::Arc;
use ::agent_client::apis::configuration::Configuration;
use crate::{
configs::ProgramSettings,
routes::{self, AuthState},
@@ -25,6 +27,8 @@ pub struct AppService {
pub auth_state: AuthState,
pub user: ServiceState<dyn UserService>,
pub server_state: ServiceState<dyn ServerStateStore>,
#[allow(dead_code)]
pub agent_client: ServiceState<agent_client::AgentService>,
}
pub fn get_app_service(
@@ -43,5 +47,8 @@ pub fn get_app_service(
)),
},
user: Arc::new(UserServiceImpl::new(db_connection.clone())),
agent_client: Arc::new(agent_client::AgentService::new(Configuration::from(
settings.agent.clone(),
))),
}
}

View File

@@ -1,11 +1,32 @@
use std::sync::Arc;
use agent_client::apis::{ApiClient, configuration::Configuration};
use tracing::warn;
use crate::configs::agent::AgentSettings;
pub struct AgentService {
client: Arc<ApiClient>,
}
impl From<AgentSettings> for Configuration {
fn from(settings: AgentSettings) -> Self {
let mut config = Configuration::default();
let mut builder = reqwest::Client::builder();
let url = settings.socket_path;
if url.starts_with("unix://") {
builder = builder.unix_socket(url.to_string());
config.client = builder.build().expect("Failed to build reqwest client");
} else {
warn!("AgentSettings contains a non-unix socket path: {}", url);
config.base_path = url;
}
config
}
}
impl AgentService {
pub fn new(config: impl Into<Arc<Configuration>>) -> Self {
let client = ApiClient::new(config.into());