cds-snc/elenchos

View on GitHub
src/lib/github/githubAuth.ts

Summary

Maintainability
A
0 mins
Test Coverage
import path from "path";
import { getFile } from "../util/getFile";
import { App } from "@octokit/app";
const Octokit = require("@octokit/rest");

require("dotenv-safe").config({ allowEmptyValues: true });

const GITHUB_PEM = process.env.PEM;
const ISSUER_ID = Number(process.env.ISSUER_ID);

const getKey = async (): Promise<string> => {
  const file = path.resolve(__dirname, `../../../${GITHUB_PEM}`);
  const result = await getFile(file);
  return result.toString("utf8");
};

export const authenticate = async (installationId: string): Promise<any> => {
  const app = new App({
    id: ISSUER_ID,
    privateKey: await getKey()
  });

  const installationAccessToken = await app.getInstallationAccessToken({
    installationId: Number(installationId)
  });

  const octokit = new Octokit({
    auth: `token ${installationAccessToken}`,
    previews: ["ant-man-preview", "flash-preview"]
  });

  return octokit;
};