use crate::publisher::builder::PublisherPartialBuilder;
#[derive(Clone, Debug)]
pub struct BasePublisher {
pub(crate) inner: crate::generated::gapic_dataplane::client::Publisher,
}
pub use super::client_builder::BasePublisherBuilder;
impl BasePublisher {
pub fn builder() -> BasePublisherBuilder {
BasePublisherBuilder::new()
}
pub(crate) async fn new(builder: BasePublisherBuilder) -> crate::ClientBuilderResult<Self> {
let inner =
crate::generated::gapic_dataplane::client::Publisher::new(builder.config).await?;
std::result::Result::Ok(Self { inner })
}
pub fn publisher<T>(&self, topic: T) -> PublisherPartialBuilder
where
T: Into<String>,
{
PublisherPartialBuilder::new(self.inner.clone(), topic.into())
}
}
#[cfg(test)]
mod tests {
use super::BasePublisher;
use google_cloud_auth::credentials::anonymous::Builder as Anonymous;
#[tokio::test]
async fn builder() -> anyhow::Result<()> {
let client = BasePublisher::builder()
.with_credentials(Anonymous::new().build())
.build()
.await?;
let _ = client.publisher("projects/my-project/topics/my-topic".to_string());
Ok(())
}
}