use crate::Error;
use misskey_api::endpoint;
use misskey_api::model::clip::Clip;
use misskey_core::Client;
pub struct ClipBuilder<C> {
client: C,
request: endpoint::clips::create::Request,
}
#[cfg(feature = "12-57-0")]
#[cfg_attr(docsrs, doc(cfg(feature = "12-57-0")))]
impl<C> ClipBuilder<C> {
pub fn new(client: C) -> Self {
let request = endpoint::clips::create::Request {
name: String::default(),
is_public: Some(false),
description: None,
};
ClipBuilder { client, request }
}
pub fn as_request(&self) -> &endpoint::clips::create::Request {
&self.request
}
pub fn name(&mut self, name: impl Into<String>) -> &mut Self {
self.request.name = name.into();
self
}
pub fn public(&mut self, public: bool) -> &mut Self {
self.request.is_public.replace(public);
self
}
pub fn description(&mut self, description: impl Into<String>) -> &mut Self {
self.request.description.replace(description.into());
self
}
}
impl<C: Client> ClipBuilder<C> {
pub async fn create(&self) -> Result<Clip, Error<C::Error>> {
let clip = self
.client
.request(&self.request)
.await
.map_err(Error::Client)?
.into_result()?;
Ok(clip)
}
}
pub struct ClipUpdateBuilder<C> {
client: C,
request: endpoint::clips::update::Request,
}
#[cfg(feature = "12-57-0")]
#[cfg_attr(docsrs, doc(cfg(feature = "12-57-0")))]
impl<C> ClipUpdateBuilder<C> {
pub fn new(client: C, clip: Clip) -> Self {
let Clip {
id,
name,
is_public,
description,
..
} = clip;
let request = endpoint::clips::update::Request {
clip_id: id,
name,
is_public,
description,
};
ClipUpdateBuilder { client, request }
}
pub fn as_request(&self) -> &endpoint::clips::update::Request {
&self.request
}
pub fn name(&mut self, name: impl Into<String>) -> &mut Self {
self.request.name = name.into();
self
}
pub fn public(&mut self, public: bool) -> &mut Self {
self.request.is_public = public;
self
}
pub fn description(&mut self, description: impl Into<String>) -> &mut Self {
self.request.description.replace(description.into());
self
}
}
impl<C: Client> ClipUpdateBuilder<C> {
pub async fn update(&self) -> Result<Clip, Error<C::Error>> {
let clip = self
.client
.request(&self.request)
.await
.map_err(Error::Client)?
.into_result()?;
Ok(clip)
}
}