hugging_face_client/client/
collection.rs1use reqwest::Method;
2
3use crate::{
4 api::{
5 CreateCollectionItemReq, CreateCollectionItemRes, CreateCollectionReq, DeleteCollectionItemReq,
6 DeleteCollectionItemRes, DeleteCollectionReq, DeleteCollectionRes, GetCollectionReq,
7 GetCollectionRes, GetCollectionsReq, GetCollectionsRes, ModifyCollectionItemReq,
8 ModifyCollectionItemRes, ModifyCollectionReq, ModifyCollectionRes,
9 },
10 client::Client,
11 errors::Result,
12};
13
14impl Client {
15 pub async fn get_collections(&self, req: GetCollectionsReq<'_>) -> Result<GetCollectionsRes> {
19 let url = format!("{}/api/collections", &self.api_endpoint);
20 self.get_request(&url, Some(&req), false).await
21 }
22
23 pub async fn get_collection(&self, req: GetCollectionReq<'_>) -> Result<GetCollectionRes> {
27 let url = format!("{}/api/collections/{}", &self.api_endpoint, req.slug);
28 self.get_request(&url, self.empty_req(), false).await
29 }
30
31 pub async fn create_collection(&self, req: CreateCollectionReq<'_>) -> Result<GetCollectionRes> {
35 let url = format!("{}/api/collections", &self.api_endpoint);
36 self.exec_request(&url, Method::POST, Some(&req)).await
37 }
38
39 pub async fn delete_collection(
43 &self,
44 req: DeleteCollectionReq<'_>,
45 ) -> Result<DeleteCollectionRes> {
46 let url = format!("{}/api/collections/{}", &self.api_endpoint, req.slug);
47 self.exec_request(&url, Method::DELETE, self.empty_req()).await
48 }
49
50 pub async fn modify_collection(
54 &self,
55 req: ModifyCollectionReq<'_>,
56 ) -> Result<ModifyCollectionRes> {
57 let url = format!("{}/api/collections/{}", &self.api_endpoint, req.slug);
58 self.exec_request(&url, Method::PATCH, Some(&req)).await
59 }
60
61 pub async fn create_collection_item(
65 &self,
66 req: CreateCollectionItemReq<'_>,
67 ) -> Result<CreateCollectionItemRes> {
68 let url = format!(
69 "{}/api/collections/{}/items",
70 &self.api_endpoint, req.collection_slug
71 );
72 self.exec_request(&url, Method::POST, Some(&req)).await
73 }
74
75 pub async fn modify_collection_item(
79 &self,
80 req: ModifyCollectionItemReq<'_>,
81 ) -> Result<ModifyCollectionItemRes> {
82 let url = format!(
83 "{}/api/collections/{}/items/{}",
84 &self.api_endpoint, req.collection_slug, req.item_id
85 );
86 self.exec_request(&url, Method::PATCH, Some(&req)).await
87 }
88
89 pub async fn delete_collection_item(
93 &self,
94 req: DeleteCollectionItemReq<'_>,
95 ) -> Result<DeleteCollectionItemRes> {
96 let url = format!(
97 "{}/api/collections/{}/items/{}",
98 &self.api_endpoint, req.collection_slug, req.item_id
99 );
100 self.exec_request(&url, Method::DELETE, self.empty_req()).await
101 }
102}