ephemeris_forge_forgejo/api/http/
webhooks.rs1use 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}