Skip to content
This repository has been archived by the owner on Dec 10, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1966 from bearx3f/main
Browse files Browse the repository at this point in the history
Add TriggerTestProjectHook function to ProjectsService
  • Loading branch information
svanharmelen authored Jul 13, 2024
2 parents ec404fa + 2ea42f2 commit 69412a4
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
27 changes: 27 additions & 0 deletions projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -1411,6 +1411,33 @@ func (s *ProjectsService) DeleteProjectHook(pid interface{}, hook int, options .
return s.client.Do(req, nil)
}

// TriggerTestProjectHook Trigger a test hook for a specified project.
//
// In GitLab 17.0 and later, this endpoint has a special rate limit.
// In GitLab 17.0 the rate was three requests per minute for each project hook.
// In GitLab 17.1 this was changed to five requests per minute for each project
// and authenticated user.
//
// To disable this limit on self-managed GitLab and GitLab Dedicated,
// an administrator can disable the feature flag named web_hook_test_api_endpoint_rate_limit.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/projects.html#trigger-a-test-project-hook
func (s *ProjectsService) TriggerTestProjectHook(pid interface{}, hook int, event ProjectHookEvent, options ...RequestOptionFunc) (*Response, error) {
project, err := parseID(pid)
if err != nil {
return nil, err
}
u := fmt.Sprintf("projects/%s/hooks/%d/test/%s", PathEscape(project), hook, string(event))

req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
if err != nil {
return nil, err
}

return s.client.Do(req, nil)
}

// SetHookCustomHeaderOptions represents a project or group hook custom header.
// If the header isn't present, it will be created.
//
Expand Down
23 changes: 23 additions & 0 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,29 @@ func ProjectCreationLevel(v ProjectCreationLevelValue) *ProjectCreationLevelValu
return Ptr(v)
}

// ProjectHookEvent represents a project hook event.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/projects.html#hook-events
type ProjectHookEvent string

// List of available project hook events.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/projects.html#hook-events
const (
ProjectHookEventPush ProjectHookEvent = "push_events"
ProjectHookEventTagPush ProjectHookEvent = "tag_push_events"
ProjectHookEventIssues ProjectHookEvent = "issues_events"
ProjectHookEventConfidentialIssues ProjectHookEvent = "confidential_issues_events"
ProjectHookEventNote ProjectHookEvent = "note_events"
ProjectHookEventMergeRequests ProjectHookEvent = "merge_requests_events"
ProjectHookEventJob ProjectHookEvent = "job_events"
ProjectHookEventPipeline ProjectHookEvent = "pipeline_events"
ProjectHookEventWiki ProjectHookEvent = "wiki_page_events"
ProjectHookEventReleases ProjectHookEvent = "releases_events"
ProjectHookEventEmoji ProjectHookEvent = "emoji_events"
ProjectHookEventResourceAccessToken ProjectHookEvent = "resource_access_token_events"
)

// ResourceGroupProcessMode represents a process mode for a resource group
// within a GitLab project.
//
Expand Down

0 comments on commit 69412a4

Please sign in to comment.