From dac8912e9f7ca6196d278481c5bfd96c40376235 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Mon, 14 Nov 2022 18:59:39 +0000 Subject: [PATCH] Remove `deriveApiUrl` function only used by runner --- lib/api-client.js | 16 +-------- lib/api-client.js.map | 2 +- lib/api-client.test.js | 42 ----------------------- lib/api-client.test.js.map | 2 +- src/api-client.test.ts | 70 ++------------------------------------ src/api-client.ts | 20 +---------- 6 files changed, 6 insertions(+), 146 deletions(-) diff --git a/lib/api-client.js b/lib/api-client.js index 7161a8d02..5fb6a3dd0 100644 --- a/lib/api-client.js +++ b/lib/api-client.js @@ -23,7 +23,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getGitHubVersion = exports.getActionsApiClient = exports.getApiDetails = exports.getApiClient = exports.DisallowedAPIVersionReason = void 0; -const path = __importStar(require("path")); const githubUtils = __importStar(require("@actions/github/lib/utils")); const retry = __importStar(require("@octokit/plugin-retry")); const console_log_level_1 = __importDefault(require("console-log-level")); @@ -40,26 +39,13 @@ var DisallowedAPIVersionReason; const getApiClient = function (apiDetails, { allowExternal = false } = {}) { const auth = (allowExternal && apiDetails.externalRepoAuth) || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); - const apiURL = apiDetails.apiURL || deriveApiUrl(apiDetails.url); return new retryingOctokit(githubUtils.getOctokitOptions(auth, { - baseUrl: apiURL, + baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${pkg.version}`, log: (0, console_log_level_1.default)({ level: "debug" }), })); }; exports.getApiClient = getApiClient; -// Once the runner is deleted, this can also be removed since the GitHub API URL is always available in an environment variable on Actions. -function deriveApiUrl(githubUrl) { - const url = new URL(githubUrl); - // If we detect this is trying to connect to github.com - // then return with a fixed canonical URL. - if (url.hostname === "github.com" || url.hostname === "api.github.com") { - return "https://api.github.com"; - } - // Add the /api/v3 API prefix - url.pathname = path.join(url.pathname, "api", "v3"); - return url.toString(); -} function getApiDetails() { return { auth: (0, actions_util_1.getRequiredInput)("token"), diff --git a/lib/api-client.js.map b/lib/api-client.js.map index c3689f073..430627c4f 100644 --- a/lib/api-client.js.map +++ b/lib/api-client.js.map @@ -1 +1 @@ -{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B,uEAAyD;AACzD,6DAA+C;AAC/C,0EAAgD;AAEhD,iDAAkD;AAClD,6CAA+B;AAC/B,iCAA4D;AAE5D,8CAA8C;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,+FAAc,CAAA;IACd,+FAAc,CAAA;AAChB,CAAC,EAHW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAGrC;AAiBM,MAAM,YAAY,GAAG,UAC1B,UAAoC,EACpC,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,EAAE;IAE9B,MAAM,IAAI,GACR,CAAC,aAAa,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;IACpE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,IAAI,eAAe,CACxB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAClC,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;QACzC,GAAG,EAAE,IAAA,2BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KACzC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB;AAEF,2IAA2I;AAC3I,SAAS,YAAY,CAAC,SAAiB;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAE/B,uDAAuD;IACvD,0CAA0C;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE;QACtE,OAAO,wBAAwB,CAAC;KACjC;IAED,6BAA6B;IAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,IAAA,+BAAgB,EAAC,OAAO,CAAC;QAC/B,GAAG,EAAE,IAAA,0BAAmB,EAAC,mBAAmB,CAAC;QAC7C,MAAM,EAAE,IAAA,0BAAmB,EAAC,gBAAgB,CAAC;KAC9C,CAAC;AACJ,CAAC;AAND,sCAMC;AAED,uFAAuF;AACvF,qFAAqF;AACrF,+CAA+C;AAC/C,SAAgB,mBAAmB;IACjC,OAAO,IAAA,oBAAY,EAAC,aAAa,EAAE,CAAC,CAAC;AACvC,CAAC;AAFD,kDAEC;AAED,IAAI,mBAAmB,GAA8B,SAAS,CAAC;AAE/D;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB;IACpC,IAAI,mBAAmB,KAAK,SAAS,EAAE;QACrC,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;KACpE;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AALD,4CAKC"} \ No newline at end of file +{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAyD;AACzD,6DAA+C;AAC/C,0EAAgD;AAEhD,iDAAkD;AAClD,6CAA+B;AAC/B,iCAA4D;AAE5D,8CAA8C;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,+FAAc,CAAA;IACd,+FAAc,CAAA;AAChB,CAAC,EAHW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAGrC;AAiBM,MAAM,YAAY,GAAG,UAC1B,UAAoC,EACpC,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,EAAE;IAE9B,MAAM,IAAI,GACR,CAAC,aAAa,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;IACpE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,IAAI,eAAe,CACxB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAClC,OAAO,EAAE,UAAU,CAAC,MAAM;QAC1B,SAAS,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;QACzC,GAAG,EAAE,IAAA,2BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;KACzC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB;AAEF,SAAgB,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,IAAA,+BAAgB,EAAC,OAAO,CAAC;QAC/B,GAAG,EAAE,IAAA,0BAAmB,EAAC,mBAAmB,CAAC;QAC7C,MAAM,EAAE,IAAA,0BAAmB,EAAC,gBAAgB,CAAC;KAC9C,CAAC;AACJ,CAAC;AAND,sCAMC;AAED,uFAAuF;AACvF,qFAAqF;AACrF,+CAA+C;AAC/C,SAAgB,mBAAmB;IACjC,OAAO,IAAA,oBAAY,EAAC,aAAa,EAAE,CAAC,CAAC;AACvC,CAAC;AAFD,kDAEC;AAED,IAAI,mBAAmB,GAA8B,SAAS,CAAC;AAE/D;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB;IACpC,IAAI,mBAAmB,KAAK,SAAS,EAAE;QACrC,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;KACpE;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AALD,4CAKC"} \ No newline at end of file diff --git a/lib/api-client.test.js b/lib/api-client.test.js index 481c5d8ed..7f0f393e0 100644 --- a/lib/api-client.test.js +++ b/lib/api-client.test.js @@ -39,48 +39,6 @@ ava_1.default.beforeEach(() => { pluginStub.returns(githubStub); (0, util_1.initializeEnvironment)(pkg.version); }); -(0, ava_1.default)("Get the client API", async (t) => { - doTest(t, { - auth: "xyz", - externalRepoAuth: "abc", - url: "http://hucairz", - }, undefined, { - auth: "token xyz", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - }); -}); -(0, ava_1.default)("Get the client API external", async (t) => { - doTest(t, { - auth: "xyz", - externalRepoAuth: "abc", - url: "http://hucairz", - }, { allowExternal: true }, { - auth: "token abc", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - }); -}); -(0, ava_1.default)("Get the client API external not present", async (t) => { - doTest(t, { - auth: "xyz", - url: "http://hucairz", - }, { allowExternal: true }, { - auth: "token xyz", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - }); -}); -(0, ava_1.default)("Get the client API with github url", async (t) => { - doTest(t, { - auth: "xyz", - url: "https://github.com/some/invalid/url", - }, undefined, { - auth: "token xyz", - baseUrl: "https://api.github.com", - userAgent: `CodeQL-Action/${pkg.version}`, - }); -}); (0, ava_1.default)("Get the API with an API URL directly", async (t) => { doTest(t, { auth: "xyz", diff --git a/lib/api-client.test.js.map b/lib/api-client.test.js.map index d21a7d474..1aa4a96b8 100644 --- a/lib/api-client.test.js.map +++ b/lib/api-client.test.js.map @@ -1 +1 @@ -{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../src/api-client.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAyD;AACzD,8CAA6C;AAC7C,6CAA+B;AAE/B,6CAAsE;AACtE,mDAA6C;AAC7C,iCAA+C;AAE/C,8CAA8C;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,IAAA,0BAAU,EAAC,aAAI,CAAC,CAAC;AAEjB,IAAI,UAA2B,CAAC;AAChC,IAAI,UAA2B,CAAC;AAEhC,aAAI,CAAC,UAAU,CAAC,GAAG,EAAE;IACnB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,IAAA,4BAAqB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvD,MAAM,CACJ,CAAC,EACD;QACE,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,6BAA6B;KACtC,EACD,SAAS,EACT;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,6BAA6B;QACtC,SAAS,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;KAC1C,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,MAAM,CACb,CAA4B,EAC5B,UAAoC,EACpC,aAAkB,EAClB,QAAa;IAEb,IAAA,yBAAY,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,iEAAiE;IACjE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5B,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,CAAC"} \ No newline at end of file diff --git a/src/api-client.test.ts b/src/api-client.test.ts index b6203d9c3..e50d2dd7b 100644 --- a/src/api-client.test.ts +++ b/src/api-client.test.ts @@ -2,7 +2,7 @@ import * as githubUtils from "@actions/github/lib/utils"; import test, { ExecutionContext } from "ava"; import * as sinon from "sinon"; -import { getApiClient } from "./api-client"; +import { getApiClient, GitHubApiCombinedDetails } from "./api-client"; import { setupTests } from "./testing-utils"; import { initializeEnvironment } from "./util"; @@ -21,72 +21,6 @@ test.beforeEach(() => { initializeEnvironment(pkg.version); }); -test("Get the client API", async (t) => { - doTest( - t, - { - auth: "xyz", - externalRepoAuth: "abc", - url: "http://hucairz", - }, - undefined, - { - auth: "token xyz", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - } - ); -}); - -test("Get the client API external", async (t) => { - doTest( - t, - { - auth: "xyz", - externalRepoAuth: "abc", - url: "http://hucairz", - }, - { allowExternal: true }, - { - auth: "token abc", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - } - ); -}); - -test("Get the client API external not present", async (t) => { - doTest( - t, - { - auth: "xyz", - url: "http://hucairz", - }, - { allowExternal: true }, - { - auth: "token xyz", - baseUrl: "http://hucairz/api/v3", - userAgent: `CodeQL-Action/${pkg.version}`, - } - ); -}); - -test("Get the client API with github url", async (t) => { - doTest( - t, - { - auth: "xyz", - url: "https://github.com/some/invalid/url", - }, - undefined, - { - auth: "token xyz", - baseUrl: "https://api.github.com", - userAgent: `CodeQL-Action/${pkg.version}`, - } - ); -}); - test("Get the API with an API URL directly", async (t) => { doTest( t, @@ -106,7 +40,7 @@ test("Get the API with an API URL directly", async (t) => { function doTest( t: ExecutionContext, - clientArgs: any, + clientArgs: GitHubApiCombinedDetails, clientOptions: any, expected: any ) { diff --git a/src/api-client.ts b/src/api-client.ts index 45f77550e..966afb0bf 100644 --- a/src/api-client.ts +++ b/src/api-client.ts @@ -1,5 +1,3 @@ -import * as path from "path"; - import * as githubUtils from "@actions/github/lib/utils"; import * as retry from "@octokit/plugin-retry"; import consoleLogLevel from "console-log-level"; @@ -38,31 +36,15 @@ export const getApiClient = function ( const auth = (allowExternal && apiDetails.externalRepoAuth) || apiDetails.auth; const retryingOctokit = githubUtils.GitHub.plugin(retry.retry); - const apiURL = apiDetails.apiURL || deriveApiUrl(apiDetails.url); return new retryingOctokit( githubUtils.getOctokitOptions(auth, { - baseUrl: apiURL, + baseUrl: apiDetails.apiURL, userAgent: `CodeQL-Action/${pkg.version}`, log: consoleLogLevel({ level: "debug" }), }) ); }; -// Once the runner is deleted, this can also be removed since the GitHub API URL is always available in an environment variable on Actions. -function deriveApiUrl(githubUrl: string): string { - const url = new URL(githubUrl); - - // If we detect this is trying to connect to github.com - // then return with a fixed canonical URL. - if (url.hostname === "github.com" || url.hostname === "api.github.com") { - return "https://api.github.com"; - } - - // Add the /api/v3 API prefix - url.pathname = path.join(url.pathname, "api", "v3"); - return url.toString(); -} - export function getApiDetails() { return { auth: getRequiredInput("token"),