Skip to content

Commit 462cda4

Browse files
authored
Add support for registry_package event (#3545)
1 parent b98b707 commit 462cda4

File tree

7 files changed

+270
-0
lines changed

7 files changed

+270
-0
lines changed

github/event_types.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,6 +1446,26 @@ type PushEventRepoOwner struct {
14461446
Email *string `json:"email,omitempty"`
14471447
}
14481448

1449+
// RegistryPackageEvent represents activity related to GitHub Packages.
1450+
// The Webhook event name is "registry_package".
1451+
//
1452+
// This event is triggered when a GitHub Package is published or updated.
1453+
//
1454+
// GitHub API docs: https://docs.github.com/en/webhooks/webhook-events-and-payloads#registry_package
1455+
type RegistryPackageEvent struct {
1456+
// Action is the action that was performed.
1457+
// Can be "published" or "updated".
1458+
Action *string `json:"action,omitempty"`
1459+
RegistryPackage *Package `json:"registry_package,omitempty"`
1460+
Repository *Repository `json:"repository,omitempty"`
1461+
Organization *Organization `json:"organization,omitempty"`
1462+
Enterprise *Enterprise `json:"enterprise,omitempty"`
1463+
Sender *User `json:"sender,omitempty"`
1464+
1465+
// The following fields are only populated by Webhook events.
1466+
Installation *Installation `json:"installation,omitempty"`
1467+
}
1468+
14491469
// ReleaseEvent is triggered when a release is published, unpublished, created,
14501470
// edited, deleted, or prereleased.
14511471
// The Webhook event name is "release".

github/event_types_test.go

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8640,6 +8640,135 @@ func TestPingEvent_Marshal(t *testing.T) {
86408640
testJSONMarshal(t, u, want)
86418641
}
86428642

8643+
func TestRegistryPackageEvent_Marshal(t *testing.T) {
8644+
t.Parallel()
8645+
testJSONMarshal(t, &RegistryPackageEvent{}, "{}")
8646+
8647+
u := &RegistryPackageEvent{
8648+
Action: Ptr("a"),
8649+
RegistryPackage: &Package{
8650+
ID: Ptr(int64(1)),
8651+
Name: Ptr("n"),
8652+
PackageType: Ptr("pt"),
8653+
HTMLURL: Ptr("hurl"),
8654+
CreatedAt: &Timestamp{referenceTime},
8655+
UpdatedAt: &Timestamp{referenceTime},
8656+
Owner: &User{
8657+
Login: Ptr("l"),
8658+
ID: Ptr(int64(1)),
8659+
NodeID: Ptr("n"),
8660+
URL: Ptr("u"),
8661+
ReposURL: Ptr("r"),
8662+
EventsURL: Ptr("e"),
8663+
AvatarURL: Ptr("a"),
8664+
},
8665+
PackageVersion: &PackageVersion{ID: Ptr(int64(1))},
8666+
Registry: &PackageRegistry{Name: Ptr("n")},
8667+
},
8668+
Repository: &Repository{
8669+
ID: Ptr(int64(1)),
8670+
URL: Ptr("s"),
8671+
Name: Ptr("n"),
8672+
},
8673+
Organization: &Organization{
8674+
BillingEmail: Ptr("be"),
8675+
Blog: Ptr("b"),
8676+
Company: Ptr("c"),
8677+
Email: Ptr("e"),
8678+
TwitterUsername: Ptr("tu"),
8679+
Location: Ptr("loc"),
8680+
Name: Ptr("n"),
8681+
Description: Ptr("d"),
8682+
IsVerified: Ptr(true),
8683+
HasOrganizationProjects: Ptr(true),
8684+
HasRepositoryProjects: Ptr(true),
8685+
DefaultRepoPermission: Ptr("drp"),
8686+
MembersCanCreateRepos: Ptr(true),
8687+
MembersCanCreateInternalRepos: Ptr(true),
8688+
MembersCanCreatePrivateRepos: Ptr(true),
8689+
MembersCanCreatePublicRepos: Ptr(false),
8690+
MembersAllowedRepositoryCreationType: Ptr("marct"),
8691+
MembersCanCreatePages: Ptr(true),
8692+
MembersCanCreatePublicPages: Ptr(false),
8693+
MembersCanCreatePrivatePages: Ptr(true),
8694+
},
8695+
Sender: &User{
8696+
Login: Ptr("l"),
8697+
ID: Ptr(int64(1)),
8698+
NodeID: Ptr("n"),
8699+
URL: Ptr("u"),
8700+
ReposURL: Ptr("r"),
8701+
EventsURL: Ptr("e"),
8702+
AvatarURL: Ptr("a"),
8703+
},
8704+
}
8705+
8706+
want := `{
8707+
"action": "a",
8708+
"registry_package": {
8709+
"id": 1,
8710+
"name": "n",
8711+
"package_type": "pt",
8712+
"html_url": "hurl",
8713+
"created_at": ` + referenceTimeStr + `,
8714+
"updated_at": ` + referenceTimeStr + `,
8715+
"owner": {
8716+
"login": "l",
8717+
"id": 1,
8718+
"node_id": "n",
8719+
"avatar_url": "a",
8720+
"url": "u",
8721+
"events_url": "e",
8722+
"repos_url": "r"
8723+
},
8724+
"package_version": {
8725+
"id": 1
8726+
},
8727+
"registry": {
8728+
"name": "n"
8729+
}
8730+
},
8731+
"repository": {
8732+
"id": 1,
8733+
"name": "n",
8734+
"url": "s"
8735+
},
8736+
"organization": {
8737+
"name": "n",
8738+
"company": "c",
8739+
"blog": "b",
8740+
"location": "loc",
8741+
"email": "e",
8742+
"twitter_username": "tu",
8743+
"description": "d",
8744+
"billing_email": "be",
8745+
"is_verified": true,
8746+
"has_organization_projects": true,
8747+
"has_repository_projects": true,
8748+
"default_repository_permission": "drp",
8749+
"members_can_create_repositories": true,
8750+
"members_can_create_public_repositories": false,
8751+
"members_can_create_private_repositories": true,
8752+
"members_can_create_internal_repositories": true,
8753+
"members_allowed_repository_creation_type": "marct",
8754+
"members_can_create_pages": true,
8755+
"members_can_create_public_pages": false,
8756+
"members_can_create_private_pages": true
8757+
},
8758+
"sender": {
8759+
"login": "l",
8760+
"id": 1,
8761+
"node_id": "n",
8762+
"avatar_url": "a",
8763+
"url": "u",
8764+
"events_url": "e",
8765+
"repos_url": "r"
8766+
}
8767+
}`
8768+
8769+
testJSONMarshal(t, u, want)
8770+
}
8771+
86438772
func TestRepositoryDispatchEvent_Marshal(t *testing.T) {
86448773
t.Parallel()
86458774
testJSONMarshal(t, &RepositoryDispatchEvent{}, "{}")

github/github-accessors.go

Lines changed: 56 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

github/github-accessors_test.go

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

github/messages.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ var (
9595
"pull_request_review_thread": &PullRequestReviewThreadEvent{},
9696
"pull_request_target": &PullRequestTargetEvent{},
9797
"push": &PushEvent{},
98+
"registry_package": &RegistryPackageEvent{},
9899
"repository": &RepositoryEvent{},
99100
"repository_dispatch": &RepositoryDispatchEvent{},
100101
"repository_import": &RepositoryImportEvent{},

github/messages_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@ func TestParseWebHook(t *testing.T) {
459459
payload: &PushEvent{},
460460
messageType: "push",
461461
},
462+
{
463+
payload: &RegistryPackageEvent{},
464+
messageType: "registry_package",
465+
},
462466
{
463467
payload: &ReleaseEvent{},
464468
messageType: "release",

github/repos_hooks_deliveries_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ var hookDeliveryPayloadTypeToStruct = map[string]interface{}{
183183
"pull_request_review_thread": &PullRequestReviewThreadEvent{},
184184
"pull_request_target": &PullRequestTargetEvent{},
185185
"push": &PushEvent{},
186+
"registry_package": &RegistryPackageEvent{},
186187
"release": &ReleaseEvent{},
187188
"repository": &RepositoryEvent{},
188189
"repository_dispatch": &RepositoryDispatchEvent{},

0 commit comments

Comments
 (0)