From 4a75d33b1f7db011317d1839182a596aae847051 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 12:04:35 -0500 Subject: [PATCH 01/11] Update gitignore for vim temp files. --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index aea73858e5..ca7884a651 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ coverage.out .idea/ vendor/ .DS_Store -.vscode \ No newline at end of file +.vscode +# vim temp files +.swp From 41f9708a1127c723c9bcd8b63cbbf6dd03715ae7 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 12:05:02 -0500 Subject: [PATCH 02/11] Update gitignore for vim temp files. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ca7884a651..c903cf6b46 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ vendor/ .DS_Store .vscode # vim temp files -.swp +*.swp From 9f3428f03adb4f4793e6e5274fb9f165e53a149f Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 12:05:38 -0500 Subject: [PATCH 03/11] Add support for listing app hook deliveries. --- github/apps_hooks.go | 3 +++ github/apps_hooks_deliveries.go | 33 ++++++++++++++++++++++++++ github/apps_hooks_deliveries_test.go | 35 ++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 github/apps_hooks_deliveries.go create mode 100644 github/apps_hooks_deliveries_test.go diff --git a/github/apps_hooks.go b/github/apps_hooks.go index ed8396f442..4fad2b7e48 100644 --- a/github/apps_hooks.go +++ b/github/apps_hooks.go @@ -9,6 +9,9 @@ import ( "context" ) +type Delivery struct { +} + // GetHookConfig returns the webhook configuration for a GitHub App. // The underlying transport must be authenticated as an app. // diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go new file mode 100644 index 0000000000..25f14fd7cc --- /dev/null +++ b/github/apps_hooks_deliveries.go @@ -0,0 +1,33 @@ +// Copyright 2021 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( + "context" +) + +// ListHookDeliveries lists deliveries of an App webhook +// +// GitHub API docs: https://docs.github.com/en/rest/reference/apps#list-deliveries-for-an-app-webhook +func (s *AppsService) ListHookDeliveries(ctx context.Context, opts *ListCursorOptions) ([]*HookDelivery, *Response, error) { + u, err := addOptions("app/hook/deliveries", opts) + if err != nil { + return nil, nil, err + } + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + deliveries := []*HookDelivery{} + resp, err := s.client.Do(ctx, req, &deliveries) + if err != nil { + return nil, resp, err + } + + return deliveries, resp, nil +} diff --git a/github/apps_hooks_deliveries_test.go b/github/apps_hooks_deliveries_test.go new file mode 100644 index 0000000000..19d982dc5f --- /dev/null +++ b/github/apps_hooks_deliveries_test.go @@ -0,0 +1,35 @@ +package github + +import ( + "context" + "fmt" + "net/http" + "testing" + + "github.com/google/go-cmp/cmp" +) + +func TestAppsService_ListHookDeliveries(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/app/hook/deliveries", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testFormValues(t, r, values{"cursor": "v1_12077215967"}) + fmt.Fprint(w, `[{"id":1}, {"id":2}]`) + }) + + opts := &ListCursorOptions{Cursor: "v1_12077215967"} + + ctx := context.Background() + + deliveries, _, err := client.Apps.ListHookDeliveries(ctx, opts) + if err != nil { + t.Errorf("Apps.ListHookDeliveries returned error: %v", err) + } + + want := []*HookDelivery{{ID: Int64(1)}, {ID: Int64(2)}} + if d := cmp.Diff(deliveries, want); d != "" { + t.Errorf("Apps.ListHooks want (-), got (+):\n%s", d) + } +} From 089e2ada997631c79aa5d6cd99a85ef71cd8109f Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 12:41:54 -0500 Subject: [PATCH 04/11] Add redelivery functionality. --- github/apps_hooks_deliveries.go | 20 +++++++++++++ github/apps_hooks_deliveries_test.go | 44 ++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go index 25f14fd7cc..54ead8fc05 100644 --- a/github/apps_hooks_deliveries.go +++ b/github/apps_hooks_deliveries.go @@ -7,6 +7,7 @@ package github import ( "context" + "fmt" ) // ListHookDeliveries lists deliveries of an App webhook @@ -31,3 +32,22 @@ func (s *AppsService) ListHookDeliveries(ctx context.Context, opts *ListCursorOp return deliveries, resp, nil } + +// RedeliverHookDelivery redelivers a delivery for an App webhook +// +// GitHub API docs: https://docs.github.com/en/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook +func (s *AppsService) RedeliverHookDelivery(ctx context.Context, deliveryID int64) (*HookDelivery, *Response, error) { + u := fmt.Sprintf("app/hook/deliveries/%v/attempts", deliveryID) + req, err := s.client.NewRequest("POST", u, nil) + if err != nil { + return nil, nil, err + } + + h := new(HookDelivery) + resp, err := s.client.Do(ctx, req, h) + if err != nil { + return nil, resp, err + } + + return h, resp, nil +} diff --git a/github/apps_hooks_deliveries_test.go b/github/apps_hooks_deliveries_test.go index 19d982dc5f..17b1a30c44 100644 --- a/github/apps_hooks_deliveries_test.go +++ b/github/apps_hooks_deliveries_test.go @@ -32,4 +32,48 @@ func TestAppsService_ListHookDeliveries(t *testing.T) { if d := cmp.Diff(deliveries, want); d != "" { t.Errorf("Apps.ListHooks want (-), got (+):\n%s", d) } + + const methodName = "ListHookDeliveries" + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Organizations.GetHookDelivery(ctx, "o", 1, 1) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} + +func TestAppsService_RedeliverHookDelivery(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/app/hook/deliveries/1/attempts", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + fmt.Fprint(w, `{"id":1}`) + }) + + ctx := context.Background() + hook, _, err := client.Apps.RedeliverHookDelivery(ctx, 1) + if err != nil { + t.Errorf("Apps.RedeliverHookDelivery returned error: %v", err) + } + + want := &HookDelivery{ID: Int64(1)} + if !cmp.Equal(hook, want) { + t.Errorf("Apps.RedeliverHookDelivery returned %+v, want %+v", hook, want) + } + + const methodName = "RedeliverHookDelivery" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Apps.RedeliverHookDelivery(ctx, -1) + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Apps.RedeliverHookDelivery(ctx, 1) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) } From 729ca6b22f5dc6b673d0cb9803c742bbe1971387 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 14:50:57 -0500 Subject: [PATCH 05/11] Add support for getting an app webhook delivery. --- github/apps_hooks_deliveries.go | 19 +++++++++++++++ github/apps_hooks_deliveries_test.go | 35 ++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go index 54ead8fc05..c7ae1eb785 100644 --- a/github/apps_hooks_deliveries.go +++ b/github/apps_hooks_deliveries.go @@ -33,6 +33,25 @@ func (s *AppsService) ListHookDeliveries(ctx context.Context, opts *ListCursorOp return deliveries, resp, nil } +// GetHookDelivery returns the App webhook delivery with the specified ID +// +// GitHub API docs: https://docs.github.com/en/rest/reference/apps#get-a-delivery-for-an-app-webhook +func (s *AppsService) GetHookDelivery(ctx context.Context, deliveryID int64) (*HookDelivery, *Response, error) { + u := fmt.Sprintf("app/hook/deliveries/%v", deliveryID) + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + h := new(HookDelivery) + resp, err := s.client.Do(ctx, req, h) + if err != nil { + return nil, resp, err + } + + return h, resp, nil +} + // RedeliverHookDelivery redelivers a delivery for an App webhook // // GitHub API docs: https://docs.github.com/en/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook diff --git a/github/apps_hooks_deliveries_test.go b/github/apps_hooks_deliveries_test.go index 17b1a30c44..78ff97cc4e 100644 --- a/github/apps_hooks_deliveries_test.go +++ b/github/apps_hooks_deliveries_test.go @@ -43,6 +43,41 @@ func TestAppsService_ListHookDeliveries(t *testing.T) { }) } +func TestAppsService_GetHookDelivery(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + mux.HandleFunc("/app/hook/deliveries/1", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{"id":1}`) + }) + + ctx := context.Background() + hook, _, err := client.Apps.GetHookDelivery(ctx, 1) + if err != nil { + t.Errorf("Apps.GetHookDelivery returned error: %v", err) + } + + want := &HookDelivery{ID: Int64(1)} + if !cmp.Equal(hook, want) { + t.Errorf("Apps.GetHookDelivery returned %+v, want %+v", hook, want) + } + + const methodName = "GetHookDelivery" + testBadOptions(t, methodName, func() (err error) { + _, _, err = client.Apps.GetHookDelivery(ctx, -1) + return err + }) + + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Apps.GetHookDelivery(ctx, 1) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} + func TestAppsService_RedeliverHookDelivery(t *testing.T) { client, mux, _, teardown := setup() defer teardown() From 4f4f714d9594c4d84d44a1df14e55e43da8456c0 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 14:54:48 -0500 Subject: [PATCH 06/11] Revert adding delivery struct. --- github/apps_hooks.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/github/apps_hooks.go b/github/apps_hooks.go index 4fad2b7e48..ed8396f442 100644 --- a/github/apps_hooks.go +++ b/github/apps_hooks.go @@ -9,9 +9,6 @@ import ( "context" ) -type Delivery struct { -} - // GetHookConfig returns the webhook configuration for a GitHub App. // The underlying transport must be authenticated as an app. // From cca80b1932ce8da084aa5f8955a5c9cc93395afb Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 15:02:46 -0500 Subject: [PATCH 07/11] Fix wrong method. --- github/apps_hooks_deliveries_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/apps_hooks_deliveries_test.go b/github/apps_hooks_deliveries_test.go index 78ff97cc4e..cc0ade5812 100644 --- a/github/apps_hooks_deliveries_test.go +++ b/github/apps_hooks_deliveries_test.go @@ -35,7 +35,7 @@ func TestAppsService_ListHookDeliveries(t *testing.T) { const methodName = "ListHookDeliveries" testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Organizations.GetHookDelivery(ctx, "o", 1, 1) + got, resp, err := client.Apps.ListHookDeliveries(ctx, opts) if got != nil { t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) } From ae3ffa2729a9369d74e27b318324de5c34fb5c4c Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 16:26:31 -0500 Subject: [PATCH 08/11] Update github/apps_hooks_deliveries.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/apps_hooks_deliveries.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go index c7ae1eb785..163cfa0209 100644 --- a/github/apps_hooks_deliveries.go +++ b/github/apps_hooks_deliveries.go @@ -10,7 +10,7 @@ import ( "fmt" ) -// ListHookDeliveries lists deliveries of an App webhook +// ListHookDeliveries lists deliveries of an App webhook. // // GitHub API docs: https://docs.github.com/en/rest/reference/apps#list-deliveries-for-an-app-webhook func (s *AppsService) ListHookDeliveries(ctx context.Context, opts *ListCursorOptions) ([]*HookDelivery, *Response, error) { From 01fb5eb721012302db09b9aa70a5f8cbe8b556c9 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 16:26:35 -0500 Subject: [PATCH 09/11] Update github/apps_hooks_deliveries.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/apps_hooks_deliveries.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go index 163cfa0209..f064b16d15 100644 --- a/github/apps_hooks_deliveries.go +++ b/github/apps_hooks_deliveries.go @@ -33,7 +33,7 @@ func (s *AppsService) ListHookDeliveries(ctx context.Context, opts *ListCursorOp return deliveries, resp, nil } -// GetHookDelivery returns the App webhook delivery with the specified ID +// GetHookDelivery returns the App webhook delivery with the specified ID. // // GitHub API docs: https://docs.github.com/en/rest/reference/apps#get-a-delivery-for-an-app-webhook func (s *AppsService) GetHookDelivery(ctx context.Context, deliveryID int64) (*HookDelivery, *Response, error) { From 7beecfa77df3088f4e73ec47c8ce07369513aed4 Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 16:26:40 -0500 Subject: [PATCH 10/11] Update github/apps_hooks_deliveries.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/apps_hooks_deliveries.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/apps_hooks_deliveries.go b/github/apps_hooks_deliveries.go index f064b16d15..0b631b80e8 100644 --- a/github/apps_hooks_deliveries.go +++ b/github/apps_hooks_deliveries.go @@ -52,7 +52,7 @@ func (s *AppsService) GetHookDelivery(ctx context.Context, deliveryID int64) (*H return h, resp, nil } -// RedeliverHookDelivery redelivers a delivery for an App webhook +// RedeliverHookDelivery redelivers a delivery for an App webhook. // // GitHub API docs: https://docs.github.com/en/rest/reference/apps#redeliver-a-delivery-for-an-app-webhook func (s *AppsService) RedeliverHookDelivery(ctx context.Context, deliveryID int64) (*HookDelivery, *Response, error) { From 2aa17baae5e638d673172ffbe0ed290d9981288a Mon Sep 17 00:00:00 2001 From: Pierce McEntagart Date: Mon, 13 Dec 2021 16:26:44 -0500 Subject: [PATCH 11/11] Update github/apps_hooks_deliveries_test.go Co-authored-by: Glenn Lewis <6598971+gmlewis@users.noreply.github.com> --- github/apps_hooks_deliveries_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/github/apps_hooks_deliveries_test.go b/github/apps_hooks_deliveries_test.go index cc0ade5812..38e25540cf 100644 --- a/github/apps_hooks_deliveries_test.go +++ b/github/apps_hooks_deliveries_test.go @@ -1,3 +1,8 @@ +// Copyright 2021 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + package github import (