func()

in pkg/gitprovider/github.go [210:247]


func (c *GitHubClient) DeleteWebHook(
	ctx context.Context,
	githubURL,
	token,
	projectID string,
	webHookRef string,
) error {
	owner, repo, err := parseProjectID(projectID)
	if err != nil {
		return err
	}

	c.restyClient.HostURL = githubURL

	resp, err := c.restyClient.
		R().
		SetContext(ctx).
		SetAuthToken(token).
		SetPathParams(map[string]string{
			ownerPathParam: owner,
			repoPathParam:  repo,
			"hook-id":      webHookRef,
		}).
		Delete("/repos/{owner}/{repo}/hooks/{hook-id}")
	if err != nil {
		return fmt.Errorf("failed to delete GitHub web hook: %w", err)
	}

	if resp.StatusCode() == http.StatusNotFound {
		return fmt.Errorf("failed to delete GitHub web hook: %w", ErrWebHookNotFound)
	}

	if resp.IsError() {
		return fmt.Errorf("failed to delete GitHub web hook: %s", resp.String())
	}

	return nil
}