Skip to main content

ephemeris_forge_forgejo/api/http/
labels.rs

1use 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}