diff --git a/pkg/github/minimal_types.go b/pkg/github/minimal_types.go index c5b588d23..3eabf2163 100644 --- a/pkg/github/minimal_types.go +++ b/pkg/github/minimal_types.go @@ -708,6 +708,25 @@ func convertToMinimalBranch(branch *github.Branch) MinimalBranch { } } +func convertToMinimalRelease(release *github.RepositoryRelease) MinimalRelease { + m := MinimalRelease{ + ID: release.GetID(), + TagName: release.GetTagName(), + Name: release.GetName(), + Body: release.GetBody(), + HTMLURL: release.GetHTMLURL(), + Prerelease: release.GetPrerelease(), + Draft: release.GetDraft(), + Author: convertToMinimalUser(release.GetAuthor()), + } + + if release.PublishedAt != nil { + m.PublishedAt = release.PublishedAt.Format(time.RFC3339) + } + + return m +} + func convertToMinimalTag(tag *github.RepositoryTag) MinimalTag { m := MinimalTag{ Name: tag.GetName(), diff --git a/pkg/github/repositories.go b/pkg/github/repositories.go index 6aa144912..a236609bc 100644 --- a/pkg/github/repositories.go +++ b/pkg/github/repositories.go @@ -1677,7 +1677,14 @@ func ListReleases(t translations.TranslationHelperFunc) inventory.ServerTool { return ghErrors.NewGitHubAPIStatusErrorResponse(ctx, "failed to list releases", resp, body), nil, nil } - r, err := json.Marshal(releases) + minimalReleases := make([]MinimalRelease, 0, len(releases)) + for _, release := range releases { + if release != nil { + minimalReleases = append(minimalReleases, convertToMinimalRelease(release)) + } + } + + r, err := json.Marshal(minimalReleases) if err != nil { return nil, nil, fmt.Errorf("failed to marshal response: %w", err) } diff --git a/pkg/github/repositories_test.go b/pkg/github/repositories_test.go index 0d7c55e85..fdb5780c2 100644 --- a/pkg/github/repositories_test.go +++ b/pkg/github/repositories_test.go @@ -3052,12 +3052,12 @@ func Test_ListReleases(t *testing.T) { require.NoError(t, err) textContent := getTextResult(t, result) - var returnedReleases []*github.RepositoryRelease + var returnedReleases []MinimalRelease err = json.Unmarshal([]byte(textContent.Text), &returnedReleases) require.NoError(t, err) assert.Len(t, returnedReleases, len(tc.expectedResult)) - for i, rel := range returnedReleases { - assert.Equal(t, *tc.expectedResult[i].TagName, *rel.TagName) + for i := range returnedReleases { + assert.Equal(t, *tc.expectedResult[i].TagName, returnedReleases[i].TagName) } }) }