feat: integrate AgentService into app service and enhance configuration handling
All checks were successful
Test / test-frontend (pull_request) Successful in 25s
Test / lint-frontend (pull_request) Successful in 28s
Test / frontend-build (pull_request) Successful in 32s
Verify / verify-generated-database-code (pull_request) Successful in 1m7s
Verify / verify-generated-agent-code (pull_request) Successful in 1m11s
Verify / verify-openapi-spec (pull_request) Successful in 1m13s
Verify / verify-frontend-api-client (pull_request) Successful in 8s
Test / test-crates (pull_request) Successful in 55s
Test / lint-crates (pull_request) Successful in 1m9s
All checks were successful
Test / test-frontend (pull_request) Successful in 25s
Test / lint-frontend (pull_request) Successful in 28s
Test / frontend-build (pull_request) Successful in 32s
Verify / verify-generated-database-code (pull_request) Successful in 1m7s
Verify / verify-generated-agent-code (pull_request) Successful in 1m11s
Verify / verify-openapi-spec (pull_request) Successful in 1m13s
Verify / verify-frontend-api-client (pull_request) Successful in 8s
Test / test-crates (pull_request) Successful in 55s
Test / lint-crates (pull_request) Successful in 1m9s
This commit is contained in:
@@ -79,6 +79,7 @@ pub async fn get_health_info(
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::configs::FromConfig;
|
use crate::configs::FromConfig;
|
||||||
|
use crate::services::agent_client::AgentService;
|
||||||
use crate::{
|
use crate::{
|
||||||
routes::{AppState, api::health::state::HealthState},
|
routes::{AppState, api::health::state::HealthState},
|
||||||
services::{
|
services::{
|
||||||
@@ -94,6 +95,7 @@ mod test {
|
|||||||
};
|
};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use agent_client::apis::configuration::Configuration;
|
||||||
use axum::body::to_bytes;
|
use axum::body::to_bytes;
|
||||||
use axum::{
|
use axum::{
|
||||||
Router,
|
Router,
|
||||||
@@ -124,6 +126,7 @@ mod test {
|
|||||||
},
|
},
|
||||||
user: Arc::new(UserServiceImpl::new(db.clone())),
|
user: Arc::new(UserServiceImpl::new(db.clone())),
|
||||||
server_state: Arc::new(ServerStateService::new(db.clone())),
|
server_state: Arc::new(ServerStateService::new(db.clone())),
|
||||||
|
agent_client: Arc::new(AgentService::new(Configuration::default())),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ pub mod settings;
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use ::agent_client::apis::configuration::Configuration;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
configs::ProgramSettings,
|
configs::ProgramSettings,
|
||||||
routes::{self, AuthState},
|
routes::{self, AuthState},
|
||||||
@@ -25,6 +27,8 @@ pub struct AppService {
|
|||||||
pub auth_state: AuthState,
|
pub auth_state: AuthState,
|
||||||
pub user: ServiceState<dyn UserService>,
|
pub user: ServiceState<dyn UserService>,
|
||||||
pub server_state: ServiceState<dyn ServerStateStore>,
|
pub server_state: ServiceState<dyn ServerStateStore>,
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub agent_client: ServiceState<agent_client::AgentService>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_app_service(
|
pub fn get_app_service(
|
||||||
@@ -43,5 +47,8 @@ pub fn get_app_service(
|
|||||||
)),
|
)),
|
||||||
},
|
},
|
||||||
user: Arc::new(UserServiceImpl::new(db_connection.clone())),
|
user: Arc::new(UserServiceImpl::new(db_connection.clone())),
|
||||||
|
agent_client: Arc::new(agent_client::AgentService::new(Configuration::from(
|
||||||
|
settings.agent.clone(),
|
||||||
|
))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,32 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use agent_client::apis::{ApiClient, configuration::Configuration};
|
use agent_client::apis::{ApiClient, configuration::Configuration};
|
||||||
|
use tracing::warn;
|
||||||
|
|
||||||
|
use crate::configs::agent::AgentSettings;
|
||||||
|
|
||||||
pub struct AgentService {
|
pub struct AgentService {
|
||||||
client: Arc<ApiClient>,
|
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 {
|
impl AgentService {
|
||||||
pub fn new(config: impl Into<Arc<Configuration>>) -> Self {
|
pub fn new(config: impl Into<Arc<Configuration>>) -> Self {
|
||||||
let client = ApiClient::new(config.into());
|
let client = ApiClient::new(config.into());
|
||||||
|
|||||||
Reference in New Issue
Block a user