Skip to content

Commit

Permalink
Use pagination for listing release assets
Browse files Browse the repository at this point in the history
  • Loading branch information
ph1ll authored and ncipollo committed Apr 15, 2021
1 parent 839c2ee commit ec90733
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 22 deletions.
24 changes: 11 additions & 13 deletions __tests__/ArtifactUploader.test.ts
Expand Up @@ -194,22 +194,20 @@ describe('ArtifactUploader', () => {
}

function mockListWithAssets() {
listArtifactsMock.mockResolvedValue({
data: [
{
name: "art1",
id: 1
},
{
name: "art2",
id: 2
}
]
})
listArtifactsMock.mockResolvedValue([
{
name: "art1",
id: 1
},
{
name: "art2",
id: 2
}
])
}

function mockListWithoutAssets() {
listArtifactsMock.mockResolvedValue({data: []})
listArtifactsMock.mockResolvedValue([])
}

function mockUploadArtifact(status: number = 200, failures: number = 0) {
Expand Down
3 changes: 1 addition & 2 deletions lib/ArtifactUploader.js
Expand Up @@ -70,8 +70,7 @@ class GithubArtifactUploader {
}
deleteUpdatedArtifacts(artifacts, releaseId) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.releases.listArtifactsForRelease(releaseId);
const releaseAssets = response.data;
const releaseAssets = yield this.releases.listArtifactsForRelease(releaseId);
const assetByName = {};
releaseAssets.forEach(asset => {
assetByName[asset.name] = asset;
Expand Down
2 changes: 1 addition & 1 deletion lib/Releases.js
Expand Up @@ -51,7 +51,7 @@ class GithubReleases {
}
listArtifactsForRelease(releaseId) {
return __awaiter(this, void 0, void 0, function* () {
return this.git.repos.listReleaseAssets({
return this.git.paginate(this.git.repos.listReleaseAssets, {
owner: this.inputs.owner,
release_id: releaseId,
repo: this.inputs.repo
Expand Down
3 changes: 1 addition & 2 deletions src/ArtifactUploader.ts
Expand Up @@ -52,8 +52,7 @@ export class GithubArtifactUploader implements ArtifactUploader {
}

private async deleteUpdatedArtifacts(artifacts: Artifact[], releaseId: number): Promise<void> {
const response = await this.releases.listArtifactsForRelease(releaseId)
const releaseAssets = response.data
const releaseAssets = await this.releases.listArtifactsForRelease(releaseId)
const assetByName: Record<string, { id: number; name: string }> = {}
releaseAssets.forEach(asset => {
assetByName[asset.name] = asset
Expand Down
8 changes: 4 additions & 4 deletions src/Releases.ts
Expand Up @@ -6,7 +6,7 @@ import {Inputs} from "./Inputs";
export type CreateReleaseResponse = RestEndpointMethodTypes["repos"]["createRelease"]["response"]
export type ReleaseByTagResponse = RestEndpointMethodTypes["repos"]["getReleaseByTag"]["response"]
export type ListReleasesResponse = RestEndpointMethodTypes["repos"]["listReleases"]["response"]
export type ListReleaseAssetsResponse = RestEndpointMethodTypes["repos"]["listReleaseAssets"]["response"]
export type ListReleaseAssetsResponseData = RestEndpointMethodTypes["repos"]["listReleaseAssets"]["response"]["data"]
export type UpdateReleaseResponse = RestEndpointMethodTypes["repos"]["updateRelease"]["response"]
export type UploadArtifactResponse = RestEndpointMethodTypes["repos"]["uploadReleaseAsset"]["response"]

Expand All @@ -25,7 +25,7 @@ export interface Releases {

getByTag(tag: string): Promise<ReleaseByTagResponse>

listArtifactsForRelease(releaseId: number): Promise<ListReleaseAssetsResponse>
listArtifactsForRelease(releaseId: number): Promise<ListReleaseAssetsResponseData>

listReleases(): Promise<ListReleasesResponse>

Expand Down Expand Up @@ -102,8 +102,8 @@ export class GithubReleases implements Releases {

async listArtifactsForRelease(
releaseId: number
): Promise<ListReleaseAssetsResponse> {
return this.git.repos.listReleaseAssets({
): Promise<ListReleaseAssetsResponseData> {
return this.git.paginate(this.git.repos.listReleaseAssets, {
owner: this.inputs.owner,
release_id: releaseId,
repo: this.inputs.repo
Expand Down

0 comments on commit ec90733

Please sign in to comment.