From 0fa906a06730db9521ca66592fc45691dee4274f Mon Sep 17 00:00:00 2001 From: eric sciple Date: Tue, 10 Dec 2019 02:31:36 -0500 Subject: [PATCH] . --- dist/index.js | 47 ++++++++++++++++------------ src/github-api-helper.ts | 66 +++++++++++++++++++++++++--------------- 2 files changed, 69 insertions(+), 44 deletions(-) diff --git a/dist/index.js b/dist/index.js index f49291a..2bb2354 100644 --- a/dist/index.js +++ b/dist/index.js @@ -8380,26 +8380,9 @@ function downloadRepository(accessToken, owner, repo, ref, commit, repositoryPat const fileStream = fs.createWriteStream(archivePath); const fileStreamClosed = getFileClosedPromise(fileStream); try { - // Get the archive URL using the GitHub REST API - core.info('Getting archive URL from GitHub REST API'); - const octokit = new github.GitHub(accessToken); - const params = { - method: 'HEAD', - archive_format: IS_WINDOWS ? 'zipball' : 'tarball', - owner: owner, - repo: repo, - ref: refHelper.getDownloadRef(ref, commit) - }; - const response = yield octokit.repos.getArchiveLink(params); - console.log('GOT THE RESPONSE'); - console.log(`status=${response.status}`); - console.log(`headers=${JSON.stringify(response.headers)}`); - if (response.status != 200) { - throw new Error(`Unexpected response from GitHub API. Status: '${response.status}'`); - } - console.log('GETTING THE LOCATION'); - const archiveUrl = response.headers['Location']; // Do not print the archive URL because it has an embedded token - assert.ok(archiveUrl, `Expected GitHub API response to contain 'Location' header`); + // Get the archive URL + core.info('Getting archive URL'); + const archiveUrl = yield getArchiveUrl(accessToken, owner, repo, ref, commit); // Download the archive core.info('Downloading the archive'); // Do not print the archive URL because it has an embedded token yield downloadFile(archiveUrl, fileStream); @@ -8460,6 +8443,30 @@ function downloadRepository(accessToken, owner, repo, ref, commit, repositoryPat }); } exports.downloadRepository = downloadRepository; +function getArchiveUrl(accessToken, owner, repo, ref, commit) { + return __awaiter(this, void 0, void 0, function* () { + const octokit = new github.GitHub(accessToken); + const params = { + method: 'HEAD', + owner: owner, + repo: repo, + archive_format: IS_WINDOWS ? 'zipball' : 'tarball', + ref: refHelper.getDownloadRef(ref, commit) + }; + const response = yield octokit.repos.getArchiveLink(params); + console.log('GOT THE RESPONSE'); + console.log(`status=${response.status}`); + console.log(`headers=${JSON.stringify(response.headers)}`); + console.log(`headers=${JSON.stringify(response.data)}`); + if (response.status != 200) { + throw new Error(`Unexpected response from GitHub API. Status: '${response.status}'`); + } + console.log('GETTING THE LOCATION'); + const archiveUrl = response.headers['Location']; // Do not print the archive URL because it has an embedded token + assert.ok(archiveUrl, `Expected GitHub API response to contain 'Location' header`); + return archiveUrl; + }); +} function downloadFile(url, fileStream) { return new Promise((resolve, reject) => { try { diff --git a/src/github-api-helper.ts b/src/github-api-helper.ts index 3407c25..1b1cf65 100644 --- a/src/github-api-helper.ts +++ b/src/github-api-helper.ts @@ -40,30 +40,14 @@ export async function downloadRepository( const fileStreamClosed = getFileClosedPromise(fileStream) try { - // Get the archive URL using the GitHub REST API - core.info('Getting archive URL from GitHub REST API') - const octokit = new github.GitHub(accessToken) - const params: RequestOptions & ReposGetArchiveLinkParams = { - method: 'HEAD', - archive_format: IS_WINDOWS ? 'zipball' : 'tarball', - owner: owner, - repo: repo, - ref: refHelper.getDownloadRef(ref, commit) - } - const response = await octokit.repos.getArchiveLink(params) - console.log('GOT THE RESPONSE') - console.log(`status=${response.status}`) - console.log(`headers=${JSON.stringify(response.headers)}`) - if (response.status != 200) { - throw new Error( - `Unexpected response from GitHub API. Status: '${response.status}'` - ) - } - console.log('GETTING THE LOCATION') - const archiveUrl = response.headers['Location'] // Do not print the archive URL because it has an embedded token - assert.ok( - archiveUrl, - `Expected GitHub API response to contain 'Location' header` + // Get the archive URL + core.info('Getting archive URL') + const archiveUrl = await getArchiveUrl( + accessToken, + owner, + repo, + ref, + commit ) // Download the archive @@ -137,6 +121,40 @@ export async function downloadRepository( } as ExecOptions) } +async function getArchiveUrl( + accessToken: string, + owner: string, + repo: string, + ref: string, + commit: string +): Promise { + const octokit = new github.GitHub(accessToken) + const params: RequestOptions & ReposGetArchiveLinkParams = { + method: 'HEAD', + owner: owner, + repo: repo, + archive_format: IS_WINDOWS ? 'zipball' : 'tarball', + ref: refHelper.getDownloadRef(ref, commit) + } + const response = await octokit.repos.getArchiveLink(params) + console.log('GOT THE RESPONSE') + console.log(`status=${response.status}`) + console.log(`headers=${JSON.stringify(response.headers)}`) + console.log(`headers=${JSON.stringify(response.data)}`) + if (response.status != 200) { + throw new Error( + `Unexpected response from GitHub API. Status: '${response.status}'` + ) + } + console.log('GETTING THE LOCATION') + const archiveUrl = response.headers['Location'] // Do not print the archive URL because it has an embedded token + assert.ok( + archiveUrl, + `Expected GitHub API response to contain 'Location' header` + ) + return archiveUrl +} + function downloadFile(url: string, fileStream: WriteStream): Promise { return new Promise((resolve, reject) => { try {