use hyper;
use hyper_util::client::legacy::Client;
use hyper_util::client::legacy::connect::Connect;
use hyper_util::client::legacy::connect::HttpConnector;
use hyper_util::rt::TokioExecutor;
pub struct Configuration<C: Connect = HttpConnector>
where
C: Clone + std::marker::Send + Sync + 'static,
{
pub base_path: String,
pub user_agent: Option<String>,
pub client: Client<C, String>,
}
impl Configuration<HttpConnector> {
pub fn new() -> Configuration<HttpConnector> {
Configuration::default()
}
}
impl<C: Connect> Configuration<C>
where
C: Clone + std::marker::Send + Sync,
{
pub fn with_client(client: Client<C, String>) -> Configuration<C> {
Configuration {
base_path: "http://localhost/api/v1".to_owned(),
user_agent: Some("cloud-hypervisor-client/0.3.0".to_owned()),
client,
}
}
}
impl Default for Configuration<HttpConnector> {
fn default() -> Self {
let client = Client::builder(TokioExecutor::new()).build_http();
Configuration::with_client(client)
}
}