pickcat_api_collection/
tag.rs1use crate::dto::tag::{TagSidebarLinksDTO, TagsDTO};
6use crate::{Error, PickcatAccound};
7
8pub trait TagBehavior {
11 fn list_tags(
13 &self,
14 assignable: Option<bool>,
15 ) -> impl std::future::Future<Output = Result<TagsDTO, Error>> + Send;
16
17 fn get_tag_sidebar_links(
19 &self,
20 slug: &str,
21 ) -> impl std::future::Future<Output = Result<TagSidebarLinksDTO, Error>> + Send;
22}
23
24impl TagBehavior for PickcatAccound {
25 async fn list_tags(&self, assignable: Option<bool>) -> Result<TagsDTO, Error> {
26 let mut request = self.client.get(format!("{}/api/v1/tags", self.base_url));
27 if let Some(assignable) = assignable {
28 request = request.query(&[("assignable", assignable)]);
29 }
30 Ok(request.send().await?.json::<TagsDTO>().await?)
31 }
32
33 async fn get_tag_sidebar_links(&self, slug: &str) -> Result<TagSidebarLinksDTO, Error> {
34 Ok(self
35 .client
36 .get(format!(
37 "{}/api/v1/tags/{}/sidebar-links",
38 self.base_url, slug
39 ))
40 .send()
41 .await?
42 .json::<TagSidebarLinksDTO>()
43 .await?)
44 }
45}