use std::collections::HashMap;
use distri_types::configuration::DefinitionOverrides;
use distri_types::dynamic_tool::DynamicToolFactory;
use distri_types::http_request::HttpFactoryConfig;
use distri_types::DistriConfig;
pub fn build_distri_request_factory(config: &DistriConfig) -> DynamicToolFactory {
let mut headers = HashMap::new();
if let Some(ref api_key) = config.api_key {
headers.insert("x-api-key".to_string(), api_key.clone());
}
if let Some(ref workspace_id) = config.workspace_id {
headers.insert("x-workspace-id".to_string(), workspace_id.clone());
}
let factory_config = HttpFactoryConfig {
base_url: config.base_url.clone(),
headers,
};
DynamicToolFactory {
name: "distri_request".to_string(),
factory_type: "http".to_string(),
config: serde_json::to_value(factory_config).expect("HttpFactoryConfig serialization"),
description: Some(
"Call the Distri platform REST API. Input: {path, method, headers?, body?}".to_string(),
),
}
}
pub fn build_platform_overrides(config: &DistriConfig) -> DefinitionOverrides {
DefinitionOverrides::new().with_dynamic_tools(vec![build_distri_request_factory(config)])
}