2024-05-25 11:25:13 +01:00
|
|
|
//
|
|
|
|
use git_next_config as config;
|
|
|
|
use git_next_git as git;
|
|
|
|
|
|
|
|
use kxio::network;
|
|
|
|
|
|
|
|
pub async fn unregister(
|
|
|
|
webhook_id: &config::WebhookId,
|
|
|
|
repo_details: &git::RepoDetails,
|
|
|
|
net: &network::Network,
|
|
|
|
) -> git::forge::webhook::Result<()> {
|
|
|
|
let hostname = &repo_details.forge.hostname();
|
|
|
|
let repo_path = &repo_details.repo_path;
|
|
|
|
use secrecy::ExposeSecret;
|
|
|
|
let token = repo_details.forge.token().expose_secret();
|
|
|
|
let url = network::NetUrl::new(format!(
|
|
|
|
"https://{hostname}/api/v1/repos/{repo_path}/hooks/{webhook_id}?token={token}"
|
|
|
|
));
|
|
|
|
let request = network::NetRequest::new(
|
|
|
|
network::RequestMethod::Delete,
|
|
|
|
url,
|
|
|
|
network::NetRequestHeaders::new(),
|
|
|
|
network::RequestBody::None,
|
|
|
|
network::ResponseType::None,
|
|
|
|
None,
|
|
|
|
network::NetRequestLogging::None,
|
|
|
|
);
|
|
|
|
let result = net.delete(request).await;
|
2024-06-04 18:30:11 +01:00
|
|
|
if let Err(e) = result {
|
|
|
|
tracing::warn!("Failed to unregister webhook");
|
2024-06-06 17:45:33 +01:00
|
|
|
return Err(git::forge::webhook::Error::FailedToUnregister(
|
|
|
|
e.to_string(),
|
|
|
|
));
|
2024-06-04 18:30:11 +01:00
|
|
|
}
|
|
|
|
Ok(())
|
2024-05-25 11:25:13 +01:00
|
|
|
}
|