use std::mem::take;
use crate::Expiry;
#[derive(Debug, Default)]
pub struct GetPasteBuilder {
pub id: String,
pub password: Option<String>,
}
impl GetPasteBuilder {
pub fn id(&mut self, id: impl Into<String>) -> &mut Self {
self.id = id.into();
self
}
pub fn password(&mut self, password: impl Into<String>) -> &mut Self {
self.password = Some(password.into());
self
}
}
#[derive(Debug, Default)]
pub struct PasteBuilder {
pub filename: String,
pub content: String,
pub expires: Option<Expiry>,
pub password: Option<String>,
}
impl PasteBuilder {
pub fn filename(&mut self, filename: impl Into<String>) -> &mut Self {
self.filename = filename.into();
self
}
pub fn content(&mut self, content: impl Into<String>) -> &mut Self {
self.content = content.into();
self
}
pub fn expires(&mut self, expires: Expiry) -> &mut Self {
self.expires = Some(expires);
self
}
pub fn password(&mut self, password: impl Into<String>) -> &mut Self {
self.password = Some(password.into());
self
}
}
#[derive(Debug, Default)]
pub struct PastesBuilder {
pub files: Vec<PasteBuilder>,
}
impl PastesBuilder {
pub fn file(
&mut self,
paste: impl FnOnce(&mut PasteBuilder) -> &mut PasteBuilder,
) -> &mut Self {
let mut builder = PasteBuilder::default();
let data = paste(&mut builder);
self.files.push(take(data));
self
}
}
#[derive(Debug)]
pub struct UserPastesOptions {
pub limit: i32,
pub page: i32,
}
impl UserPastesOptions {
pub fn limit(&mut self, limit: i32) -> &mut Self {
self.limit = limit;
self
}
pub fn page(&mut self, page: i32) -> &mut Self {
self.page = page;
self
}
}
impl Default for UserPastesOptions {
fn default() -> Self {
UserPastesOptions { limit: 50, page: 1 }
}
}