ephemeris_forge_forgejo/api/http/
labels.rs1use ephemeris_forge::{RepoRef, encode};
2use reqwest::Method;
3
4use crate::api::HttpApi;
5use crate::api::error::ForgeError;
6use crate::api::model::Label;
7use crate::api::operations::LabelsApi;
8use crate::api::request::{CreateLabelOption, EditLabelOption};
9
10impl LabelsApi for HttpApi {
11 async fn labels(&self, repo: &RepoRef) -> Result<Vec<Label>, ForgeError> {
12 self.paged(&repo.path("labels")).await
13 }
14
15 async fn create_label(
16 &self,
17 repo: &RepoRef,
18 body: &CreateLabelOption,
19 ) -> Result<(), ForgeError> {
20 let path = repo.path("labels");
21 let body = encode(body);
22 self.send_write(Method::POST, &path, Some(&body)).await
23 }
24
25 async fn patch_label(
26 &self,
27 repo: &RepoRef,
28 id: i64,
29 body: &EditLabelOption,
30 ) -> Result<(), ForgeError> {
31 let path = repo.path(&format!("labels/{id}"));
32 let body = encode(body);
33 self.send_write(Method::PATCH, &path, Some(&body)).await
34 }
35
36 async fn delete_label(&self, repo: &RepoRef, id: i64) -> Result<(), ForgeError> {
37 let path = repo.path(&format!("labels/{id}"));
38 self.send_write(Method::DELETE, &path, None).await
39 }
40}