Skip to main content

ephemeris_forge_forgejo/api/http/
webhooks.rs

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