Skip to content

Commit 159aed6

Browse files
authored
Add function for redelivering webhooks (#2061)
Fixes: #2060.
1 parent 5cea270 commit 159aed6

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

github/orgs_hooks_deliveries.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,22 @@ func (s *OrganizationsService) GetHookDelivery(ctx context.Context, owner string
5252

5353
return h, resp, nil
5454
}
55+
56+
// RedeliverHookDelivery redelivers a delivery for a webhook configured in an organization.
57+
//
58+
// GitHub API docs: https://docs.github.com/en/rest/reference/orgs#redeliver-a-delivery-for-an-organization-webhook
59+
func (s *OrganizationsService) RedeliverHookDelivery(ctx context.Context, owner string, hookID, deliveryID int64) (*HookDelivery, *Response, error) {
60+
u := fmt.Sprintf("orgs/%v/hooks/%v/deliveries/%v/attempts", owner, hookID, deliveryID)
61+
req, err := s.client.NewRequest("POST", u, nil)
62+
if err != nil {
63+
return nil, nil, err
64+
}
65+
66+
h := new(HookDelivery)
67+
resp, err := s.client.Do(ctx, req, h)
68+
if err != nil {
69+
return nil, resp, err
70+
}
71+
72+
return h, resp, nil
73+
}

github/orgs_hooks_deliveries_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,47 @@ func TestOrganizationsService_GetHookDelivery_invalidOwner(t *testing.T) {
104104
_, _, err := client.Organizations.GetHookDelivery(ctx, "%", 1, 1)
105105
testURLParseError(t, err)
106106
}
107+
108+
func TestOrganizationsService_RedeliverHookDelivery(t *testing.T) {
109+
client, mux, _, teardown := setup()
110+
defer teardown()
111+
112+
mux.HandleFunc("/orgs/o/hooks/1/deliveries/1/attempts", func(w http.ResponseWriter, r *http.Request) {
113+
testMethod(t, r, "POST")
114+
fmt.Fprint(w, `{"id":1}`)
115+
})
116+
117+
ctx := context.Background()
118+
hook, _, err := client.Organizations.RedeliverHookDelivery(ctx, "o", 1, 1)
119+
if err != nil {
120+
t.Errorf("Organizations.RedeliverHookDelivery returned error: %v", err)
121+
}
122+
123+
want := &HookDelivery{ID: Int64(1)}
124+
if !cmp.Equal(hook, want) {
125+
t.Errorf("Organizations.RedeliverHookDelivery returned %+v, want %+v", hook, want)
126+
}
127+
128+
const methodName = "Rede;overHookDelivery"
129+
testBadOptions(t, methodName, func() (err error) {
130+
_, _, err = client.Organizations.RedeliverHookDelivery(ctx, "\n", -1, -1)
131+
return err
132+
})
133+
134+
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
135+
got, resp, err := client.Organizations.RedeliverHookDelivery(ctx, "o", 1, 1)
136+
if got != nil {
137+
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
138+
}
139+
return resp, err
140+
})
141+
}
142+
143+
func TestOrganizationsService_RedeliverHookDelivery_invalidOwner(t *testing.T) {
144+
client, _, _, teardown := setup()
145+
defer teardown()
146+
147+
ctx := context.Background()
148+
_, _, err := client.Organizations.RedeliverHookDelivery(ctx, "%", 1, 1)
149+
testURLParseError(t, err)
150+
}

0 commit comments

Comments
 (0)