use crate::{
BlockingClient, Result,
types::{CreateFolderRequest, DeleteFolderResponse, Folder, FolderUid, UpdateFolderRequest},
};
#[derive(Clone)]
pub struct BlockingFoldersService {
client: BlockingClient,
}
impl BlockingFoldersService {
pub(crate) fn new(client: BlockingClient) -> Self {
Self { client }
}
pub fn list(&self) -> Result<Vec<Folder>> {
self.client.get_json(&["folders"], Option::<&()>::None)
}
pub fn get_by_uid(&self, uid: impl Into<FolderUid>) -> Result<Folder> {
let uid: FolderUid = uid.into();
let segments = ["folders", uid.0.as_str()];
self.client.get_json(&segments, Option::<&()>::None)
}
pub fn create(&self, request: &CreateFolderRequest) -> Result<Folder> {
self.client.post_json(&["folders"], request)
}
pub fn update(
&self,
uid: impl Into<FolderUid>,
request: &UpdateFolderRequest,
) -> Result<Folder> {
let uid: FolderUid = uid.into();
let segments = ["folders", uid.0.as_str()];
self.client.put_json(&segments, request)
}
pub fn delete_by_uid(&self, uid: impl Into<FolderUid>) -> Result<DeleteFolderResponse> {
let uid: FolderUid = uid.into();
let segments = ["folders", uid.0.as_str()];
self.client.delete_json(&segments)
}
}