func()

in pkg/gitprovider/github.go [126:165]


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

	c.restyClient.HostURL = githubURL
	webHook := &gitHubWebHook{}

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

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

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

	return convertWebhook(webHook), nil
}