Struct apollo_client::conf::ApolloConfClient [−][src]
pub struct ApolloConfClient { /* fields omitted */ }
This is supported on crate feature
conf
only.Expand description
Apollo configuration apis client.
Implementations
pub async fn execute<R: PerformResponse>(
&self,
request: impl PerformConfRequest<Response = R>
) -> ApolloClientResult<R>
pub async fn execute<R: PerformResponse>(
&self,
request: impl PerformConfRequest<Response = R>
) -> ApolloClientResult<R>
Execute configuration Api request.
Example
use apollo_client::{ conf::{ApolloConfClient, meta::IpValue, requests::CachedFetchRequest}, errors::ApolloClientResult, }; use ini::Properties; use std::error::Error; use url::Url; #[tokio::main] async fn main() -> Result<(), Box<dyn Error>> { let client: ApolloConfClient = todo!(); // Request apollo cached configuration api. let _configuration: Properties = client .execute( CachedFetchRequest::builder() .app_id("SampleApp") .namespace_name("application.json") .ip(IpValue::HostName) .build(), ) .await?; Ok(()) }
pub fn watch(
self,
request: WatchRequest
) -> impl Stream<Item = ApolloClientResult<HashMap<String, ApolloClientResult<FetchResponse>>>>
pub fn watch(
self,
request: WatchRequest
) -> impl Stream<Item = ApolloClientResult<HashMap<String, ApolloClientResult<FetchResponse>>>>
Watch the multi namespaces change, and fetch namespaces configuration when changed.
Return the Stream implemented futures_core::Stream, and the return value of poll_next
will never be None (Dead Loop).
The first poll_next
will fetch all namespaces, the remained will only fetch changed
namespaces.
Panic
panic if request field namespace_names
is empty.
Example
use apollo_client::conf::{ApolloConfClient, meta::IpValue, requests::WatchRequest}; use cidr_utils::cidr::IpCidr; use futures_util::{pin_mut, stream::StreamExt}; use std::error::Error; #[tokio::main] async fn main() -> Result<(), Box<dyn Error>> { let client: ApolloConfClient = todo!(); let stream = client.watch( WatchRequest::builder() .app_id("SampleApp") .namespace_names([ "application.properties".into(), "application.json".into(), "application.yml".into(), ]) .ip(IpValue::HostCidr(IpCidr::from_str("172.16.0.0/16")?)) .build(), ); pin_mut!(stream); // This is a dead loop, `next()` is returned when configuration has changed. while let Some(response) = stream.next().await { let _ = response?; } Ok(()) }
Auto Trait Implementations
impl !RefUnwindSafe for ApolloConfClient
impl Send for ApolloConfClient
impl Sync for ApolloConfClient
impl Unpin for ApolloConfClient
impl !UnwindSafe for ApolloConfClient