1use crate::client::{Client, decode_response, handle_empty_response};
4use crate::errors::Error;
5use crate::types::*;
6
7impl Client {
8 pub async fn list_webhooks(
10 &self,
11 owner: &str,
12 repo: &str,
13 opts: Option<&QueryOptions>,
14 ) -> Result<Vec<Webhook>, Error> {
15 let path = format!("/repos/{}/{}/hooks", owner, repo);
16 let resp = self.send_get(&path, opts).await?;
17 decode_response(resp).await
18 }
19
20 pub async fn create_webhook(
22 &self,
23 owner: &str,
24 repo: &str,
25 params: &CreateWebhookParams,
26 ) -> Result<Webhook, Error> {
27 let path = format!("/repos/{}/{}/hooks", owner, repo);
28 let resp = self.send_post(&path, Some(params)).await?;
29 decode_response(resp).await
30 }
31
32 pub async fn get_webhook(
34 &self,
35 owner: &str,
36 repo: &str,
37 hook_id: f64,
38 ) -> Result<Webhook, Error> {
39 let path = format!("/repos/{}/{}/hooks/{}", owner, repo, hook_id);
40 let resp = self.send_get(&path, None).await?;
41 decode_response(resp).await
42 }
43
44 pub async fn update_webhook(
46 &self,
47 owner: &str,
48 repo: &str,
49 hook_id: f64,
50 params: &UpdateWebhookParams,
51 ) -> Result<Webhook, Error> {
52 let path = format!("/repos/{}/{}/hooks/{}", owner, repo, hook_id);
53 let resp = self.send_patch(&path, Some(params)).await?;
54 decode_response(resp).await
55 }
56
57 pub async fn delete_webhook(&self, owner: &str, repo: &str, hook_id: f64) -> Result<(), Error> {
59 let path = format!("/repos/{}/{}/hooks/{}", owner, repo, hook_id);
60 let resp = self.send_delete(&path, Option::<&()>::None).await?;
61 handle_empty_response(resp).await
62 }
63}