use std::sync::Arc;
use crate::QuarkPanInner;
use crate::error::Result;
use crate::model::ListPage;
pub struct ListBuilder {
inner: Arc<QuarkPanInner>,
pdir_fid: String,
page: u32,
size: u32,
}
impl ListBuilder {
pub(crate) fn new(inner: Arc<QuarkPanInner>) -> Self {
Self {
inner,
pdir_fid: "0".to_string(),
page: 1,
size: 100,
}
}
pub fn pdir_fid(mut self, pdir_fid: impl Into<String>) -> Self {
self.pdir_fid = pdir_fid.into();
self
}
pub fn page(mut self, page: u32) -> Self {
self.page = page;
self
}
pub fn size(mut self, size: u32) -> Self {
self.size = size;
self
}
pub fn prepare(self) -> Result<ListRequest> {
Ok(ListRequest {
inner: self.inner,
pdir_fid: self.pdir_fid,
page: self.page,
size: self.size,
})
}
}
pub struct ListRequest {
inner: Arc<QuarkPanInner>,
pdir_fid: String,
page: u32,
size: u32,
}
impl ListRequest {
pub async fn request(&self) -> Result<ListPage> {
self.inner
.api
.list_folder(&self.pdir_fid, self.page, self.size)
.await
}
}