From 49ef4cf9705082a559d8d35da2e35eb3ecf02f53 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Wed, 1 Dec 2021 17:31:12 +0000 Subject: [PATCH] Fetch the app name on startup --- src/Config/Config.ts | 2 -- src/Config/Defaults.ts | 1 - src/Connections/GithubRepo.ts | 4 +--- src/Github/GithubInstance.ts | 10 ++++++++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Config/Config.ts b/src/Config/Config.ts index e3621686..57c60f17 100644 --- a/src/Config/Config.ts +++ b/src/Config/Config.ts @@ -6,7 +6,6 @@ import { configKey } from "./Decorators"; interface BridgeConfigGitHubYAML { auth: { - name: string; id: number|string; privateKeyFile: string; }; @@ -29,7 +28,6 @@ interface BridgeConfigGitHubYAML { export class BridgeConfigGitHub { @configKey("Authentication for the GitHub App.", false) auth: { - name: string; id: number|string; privateKeyFile: string; }; diff --git a/src/Config/Defaults.ts b/src/Config/Defaults.ts index 767772b5..0862037b 100644 --- a/src/Config/Defaults.ts +++ b/src/Config/Defaults.ts @@ -36,7 +36,6 @@ export const DefaultConfig = new BridgeConfig({ }, github: { auth: { - name: 'my-app-name', id: 123, privateKeyFile: "github-key.pem", }, diff --git a/src/Connections/GithubRepo.ts b/src/Connections/GithubRepo.ts index ba03a0b7..e82d7eae 100644 --- a/src/Connections/GithubRepo.ts +++ b/src/Connections/GithubRepo.ts @@ -139,8 +139,6 @@ export class GitHubRepoConnection extends CommandConnection implements IConnecti throw new ApiError("Could not determine if the user has access to this repository, does the repository exist?", ErrCode.ForbiddenUser); } - octokit.apps.addRepoToInstallationForAuthenticatedUser() - if (permissionLevel !== "admin" && permissionLevel !== "write") { throw new ApiError("You must at least have write permissions to bridge this repository", ErrCode.ForbiddenUser); } @@ -152,7 +150,7 @@ export class GitHubRepoConnection extends CommandConnection implements IConnecti -1, { // E.g. https://github.com/apps/matrix-bridge/installations/new - installUrl: `https://github.com/apps/${config.auth.name}/installations/new`, + installUrl: `https://github.com/apps/${githubInstance.appName}/installations/new`, } ); } diff --git a/src/Github/GithubInstance.ts b/src/Github/GithubInstance.ts index 2850ee83..24d18a92 100644 --- a/src/Github/GithubInstance.ts +++ b/src/Github/GithubInstance.ts @@ -23,11 +23,16 @@ export class GithubInstance { private internalOctokit!: Octokit; private readonly installationsCache = new Map(); + private internalAppName?: string; constructor (private readonly appId: number|string, private readonly privateKey: string) { this.appId = parseInt(appId as string, 10); } + public get appName() { + return this.internalAppName; + } + public static createUserOctokit(token: string) { return new Octokit({ // XXX: A recent release of octokit (rest/auth-token?) broke passing in the token @@ -76,12 +81,17 @@ export class GithubInstance { privateKey: this.privateKey, }; + this.internalOctokit = new Octokit({ authStrategy: createAppAuth, auth, userAgent: USER_AGENT, }); + + const appDetails = await this.internalOctokit.apps.getAuthenticated(); + this.internalAppName = appDetails.data.name; + let installPageSize = 100; let page = 1; do {