#[cfg(feature = "12-27-0")]
use crate::Error;
#[cfg(feature = "12-27-0")]
use misskey_api::endpoint;
#[cfg(feature = "12-27-0")]
use misskey_core::Client;
#[cfg(feature = "12-27-0")]
use url::Url;
#[cfg(feature = "12-27-0")]
#[cfg_attr(docsrs, doc(cfg(feature = "12-27-0")))]
pub struct NotificationBuilder<C> {
client: C,
request: endpoint::notifications::create::Request,
}
#[cfg(feature = "12-27-0")]
#[cfg_attr(docsrs, doc(cfg(feature = "12-27-0")))]
impl<C> NotificationBuilder<C> {
pub fn new(client: C) -> Self {
let request = endpoint::notifications::create::Request {
body: String::new(),
header: None,
icon: None,
};
NotificationBuilder { client, request }
}
pub fn as_request(&self) -> &endpoint::notifications::create::Request {
&self.request
}
pub fn body(&mut self, body: impl Into<String>) -> &mut Self {
self.request.body = body.into();
self
}
pub fn header(&mut self, header: impl Into<String>) -> &mut Self {
self.request.header.replace(header.into());
self
}
pub fn icon(&mut self, icon: Url) -> &mut Self {
self.request.icon.replace(icon);
self
}
}
#[cfg(feature = "12-27-0")]
#[cfg_attr(docsrs, doc(cfg(feature = "12-27-0")))]
impl<C: Client> NotificationBuilder<C> {
pub async fn create(&self) -> Result<(), Error<C::Error>> {
self.client
.request(&self.request)
.await
.map_err(Error::Client)?
.into_result()?;
Ok(())
}
}