actions-runner-controller/pkg/hookdeliveryforwarder/hooks_deliveries.go

47 lines
1.7 KiB
Go

package hookdeliveryforwarder
import (
"context"
gogithub "github.com/google/go-github/v39/github"
)
type hookDeliveriesAPI struct {
GetHookDelivery func(ctx context.Context, id int64) (*gogithub.HookDelivery, *gogithub.Response, error)
ListHookDeliveries func(ctx context.Context, opts *gogithub.ListCursorOptions) ([]*gogithub.HookDelivery, *gogithub.Response, error)
}
func newHookDeliveriesAPI(client *gogithub.Client, org, repo string, hookID int64) *hookDeliveriesAPI {
var hookDeliveries *hookDeliveriesAPI
if repo != "" {
hookDeliveries = repoHookDeliveriesAPI(client.Repositories, org, repo, hookID)
} else {
hookDeliveries = orgHookDeliveriesAPI(client.Organizations, org, hookID)
}
return hookDeliveries
}
func repoHookDeliveriesAPI(svc *gogithub.RepositoriesService, org, repo string, hookID int64) *hookDeliveriesAPI {
return &hookDeliveriesAPI{
GetHookDelivery: func(ctx context.Context, id int64) (*gogithub.HookDelivery, *gogithub.Response, error) {
return svc.GetHookDelivery(ctx, org, repo, hookID, id)
},
ListHookDeliveries: func(ctx context.Context, opts *gogithub.ListCursorOptions) ([]*gogithub.HookDelivery, *gogithub.Response, error) {
return svc.ListHookDeliveries(ctx, org, repo, hookID, opts)
},
}
}
func orgHookDeliveriesAPI(svc *gogithub.OrganizationsService, org string, hookID int64) *hookDeliveriesAPI {
return &hookDeliveriesAPI{
GetHookDelivery: func(ctx context.Context, id int64) (*gogithub.HookDelivery, *gogithub.Response, error) {
return svc.GetHookDelivery(ctx, org, hookID, id)
},
ListHookDeliveries: func(ctx context.Context, opts *gogithub.ListCursorOptions) ([]*gogithub.HookDelivery, *gogithub.Response, error) {
return svc.ListHookDeliveries(ctx, org, hookID, opts)
},
}
}