use apollo_client::conf::{meta::IpValue, requests::WatchRequest, ApolloConfClientBuilder};
use cidr_utils::cidr::IpCidr;
use futures_util::{pin_mut, stream::StreamExt};
use std::{error::Error, str::FromStr};
use url::Url;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
env_logger::init();
let client =
ApolloConfClientBuilder::new_via_config_service(Url::parse("http://localhost:8080")?)?
.build()?;
let stream = client.watch(WatchRequest {
app_id: "SampleApp".to_string(),
namespace_names: vec![
"application.properties".into(),
"application.json".into(),
"application.yml".into(),
],
ip: Some(IpValue::HostCidr(IpCidr::from_str("172.16.0.0/16")?)),
..Default::default()
});
pin_mut!(stream);
while let Some(response) = stream.next().await {
let responses = response?;
for response in responses {
let _ = dbg!(response);
}
}
Ok(())
}